refs #200: Create accouting-lib library
https://support.d4science.org/issues/200 Fixing validators git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/accounting/accounting-lib@115249 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
69911fd78d
commit
9ceb6ccbca
|
@ -72,7 +72,7 @@ public abstract class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
*/
|
*/
|
||||||
protected Map<String, Serializable> resourceSpecificProperties;
|
protected Map<String, Serializable> resourceSpecificProperties;
|
||||||
|
|
||||||
protected final Map<String, List<FieldValidator<? extends Annotation>>> validation;
|
protected final Map<String, List<FieldValidator>> validation;
|
||||||
|
|
||||||
protected void initializeValidation() {
|
protected void initializeValidation() {
|
||||||
logger.debug("Initializing Field Validators");
|
logger.debug("Initializing Field Validators");
|
||||||
|
@ -84,12 +84,12 @@ public abstract class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
List<FieldValidator<? extends Annotation>> fieldValidators = new ArrayList<FieldValidator<? extends Annotation>>();
|
List<FieldValidator> fieldValidators = new ArrayList<FieldValidator>();
|
||||||
validation.put(keyString, fieldValidators);
|
validation.put(keyString, fieldValidators);
|
||||||
for (Annotation annotation : field.getAnnotations()){
|
for (Annotation annotation : field.getAnnotations()){
|
||||||
if (annotation.annotationType().isAnnotationPresent(ValidityChecker.class)){
|
if (annotation.annotationType().isAnnotationPresent(ValidityChecker.class)){
|
||||||
Class<? extends FieldValidator<?>> managedClass = ((ValidityChecker)annotation.annotationType().getAnnotation(ValidityChecker.class)).managed();
|
Class<? extends FieldValidator> managedClass = ((ValidityChecker)annotation.annotationType().getAnnotation(ValidityChecker.class)).managed();
|
||||||
FieldValidator<?> validator;
|
FieldValidator validator;
|
||||||
try {
|
try {
|
||||||
validator = managedClass.newInstance();
|
validator = managedClass.newInstance();
|
||||||
} catch (InstantiationException | IllegalAccessException e) {
|
} catch (InstantiationException | IllegalAccessException e) {
|
||||||
|
@ -104,7 +104,7 @@ public abstract class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
|
|
||||||
protected RawUsageRecord(){
|
protected RawUsageRecord(){
|
||||||
this.resourceSpecificProperties = new HashMap<String, Serializable>();
|
this.resourceSpecificProperties = new HashMap<String, Serializable>();
|
||||||
this.validation = new HashMap<String, List<FieldValidator<? extends Annotation>>>();
|
this.validation = new HashMap<String, List<FieldValidator>>();
|
||||||
initializeValidation();
|
initializeValidation();
|
||||||
this.resourceSpecificProperties.put(ID, UUID.randomUUID().toString());
|
this.resourceSpecificProperties.put(ID, UUID.randomUUID().toString());
|
||||||
this.resourceSpecificProperties.put(RESOURCE_TYPE, this.getClass().getSimpleName());
|
this.resourceSpecificProperties.put(RESOURCE_TYPE, this.getClass().getSimpleName());
|
||||||
|
@ -113,7 +113,7 @@ public abstract class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected RawUsageRecord(Map<String, Serializable> properties) throws InvalidValueException {
|
protected RawUsageRecord(Map<String, Serializable> properties) throws InvalidValueException {
|
||||||
this.validation = new HashMap<String, List<FieldValidator<? extends Annotation>>>();
|
this.validation = new HashMap<String, List<FieldValidator>>();
|
||||||
initializeValidation();
|
initializeValidation();
|
||||||
setResourceSpecificProperties(properties);
|
setResourceSpecificProperties(properties);
|
||||||
}
|
}
|
||||||
|
@ -391,9 +391,9 @@ public abstract class RawUsageRecord implements UsageRecord, Serializable {
|
||||||
|
|
||||||
protected Serializable validateField(String key, Serializable serializable) throws InvalidValueException {
|
protected Serializable validateField(String key, Serializable serializable) throws InvalidValueException {
|
||||||
Serializable checkedValue = serializable;
|
Serializable checkedValue = serializable;
|
||||||
List<FieldValidator<? extends Annotation>> fieldValidators = validation.get(key);
|
List<FieldValidator> fieldValidators = validation.get(key);
|
||||||
if(fieldValidators!=null){
|
if(fieldValidators!=null){
|
||||||
for(FieldValidator<? extends Annotation> fieldValidator : fieldValidators){
|
for(FieldValidator fieldValidator : fieldValidators){
|
||||||
checkedValue = fieldValidator.validate(checkedValue);
|
checkedValue = fieldValidator.validate(checkedValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package org.gcube.accounting.datamodel.annotations;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Inherited;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
@Target(ElementType.FIELD)
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Inherited
|
||||||
|
public @interface DeprecatedField {
|
||||||
|
|
||||||
|
Class<? extends DeprecationAction> action();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.accounting.datamodel.annotations;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import org.gcube.accounting.datamodel.UsageRecord;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
|
*/
|
||||||
|
public interface DeprecationAction {
|
||||||
|
|
||||||
|
public Serializable manage(String key, Serializable manage, UsageRecord usageRecord);
|
||||||
|
|
||||||
|
}
|
|
@ -20,6 +20,6 @@ import org.gcube.accounting.datamodel.validators.FieldValidator;
|
||||||
@Inherited
|
@Inherited
|
||||||
public @interface ValidityChecker {
|
public @interface ValidityChecker {
|
||||||
|
|
||||||
Class<? extends FieldValidator<?>> managed();
|
Class<? extends FieldValidator> managed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,12 @@ import java.util.Calendar;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.RawUsageRecord;
|
import org.gcube.accounting.datamodel.RawUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.DeprecatedField;
|
||||||
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
||||||
import org.gcube.accounting.datamodel.annotations.Required;
|
import org.gcube.accounting.datamodel.annotations.Required;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidInteger;
|
import org.gcube.accounting.datamodel.annotations.ValidInteger;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidLong;
|
import org.gcube.accounting.datamodel.annotations.ValidLong;
|
||||||
|
import org.gcube.accounting.datamodel.validators.ConvertToOperationResult;
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -38,8 +40,10 @@ public class JobUsageRecord extends RawUsageRecord implements SingleUsageRecord
|
||||||
public static final String JOB_START_TIME = "jobStartTime";
|
public static final String JOB_START_TIME = "jobStartTime";
|
||||||
@Required @ValidLong
|
@Required @ValidLong
|
||||||
public static final String JOB_END_TIME = "jobEndTime";
|
public static final String JOB_END_TIME = "jobEndTime";
|
||||||
@NotEmpty
|
|
||||||
|
@DeprecatedField(action=ConvertToOperationResult.class) @NotEmpty //TODO
|
||||||
protected static final String JOB_STATUS = "jobStatus";
|
protected static final String JOB_STATUS = "jobStatus";
|
||||||
|
|
||||||
@ValidInteger
|
@ValidInteger
|
||||||
public static final String VMS_USED = "vmsUsed";
|
public static final String VMS_USED = "vmsUsed";
|
||||||
@ValidLong
|
@ValidLong
|
||||||
|
|
|
@ -5,7 +5,11 @@ package org.gcube.accounting.datamodel.implementations;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.RawUsageRecord;
|
import org.gcube.accounting.datamodel.RawUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.DeprecatedField;
|
||||||
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.NotEmptyIfNotNull;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.Required;
|
||||||
|
import org.gcube.accounting.datamodel.validators.Ignore;
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,24 +23,37 @@ public class PortletUsageRecord extends RawUsageRecord implements SingleUsageRec
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 8339324883678974869L;
|
private static final long serialVersionUID = 8339324883678974869L;
|
||||||
|
|
||||||
@NotEmpty
|
@DeprecatedField(action=Ignore.class) @NotEmptyIfNotNull
|
||||||
public static final String USER_ID = "userId";
|
protected static final String USER_ID = "userId";
|
||||||
@NotEmpty
|
|
||||||
|
@Required @NotEmpty
|
||||||
|
public static final String PORTLET_ID = "portletId";
|
||||||
|
@Required @NotEmpty
|
||||||
public static final String OPERATION_ID = "operationId";
|
public static final String OPERATION_ID = "operationId";
|
||||||
|
// TODO More
|
||||||
|
|
||||||
public PortletUsageRecord(){
|
public PortletUsageRecord(){
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public String getUserId() {
|
public String getUserId() {
|
||||||
return (String) this.resourceSpecificProperties.get(USER_ID);
|
return (String) this.resourceSpecificProperties.get(USER_ID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public void setUserId(String userId) throws InvalidValueException {
|
public void setUserId(String userId) throws InvalidValueException {
|
||||||
setResourceSpecificProperty(USER_ID, userId);
|
setResourceSpecificProperty(USER_ID, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPortletId() {
|
||||||
|
return (String) this.resourceSpecificProperties.get(PORTLET_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPortletId(String portletId) throws InvalidValueException {
|
||||||
|
setResourceSpecificProperty(PORTLET_ID, portletId);
|
||||||
|
}
|
||||||
|
|
||||||
public String getOperationId() {
|
public String getOperationId() {
|
||||||
return (String) this.resourceSpecificProperties.get(OPERATION_ID);
|
return (String) this.resourceSpecificProperties.get(OPERATION_ID);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,12 @@ package org.gcube.accounting.datamodel.implementations;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.RawUsageRecord;
|
import org.gcube.accounting.datamodel.RawUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.DeprecatedField;
|
||||||
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.Required;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidIP;
|
import org.gcube.accounting.datamodel.annotations.ValidIP;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidInteger;
|
import org.gcube.accounting.datamodel.annotations.ValidInteger;
|
||||||
|
import org.gcube.accounting.datamodel.validators.Ignore;
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -23,20 +26,18 @@ public class ServiceUsageRecord extends RawUsageRecord implements SingleUsageRec
|
||||||
|
|
||||||
@ValidIP
|
@ValidIP
|
||||||
public static final String CALLER_IP = "callerIP";
|
public static final String CALLER_IP = "callerIP";
|
||||||
@NotEmpty
|
@Required @NotEmpty
|
||||||
public static final String CALLER_SCOPE = "callerScope";
|
public static final String CALLER_SCOPE = "callerScope";
|
||||||
@NotEmpty
|
@Required @NotEmpty
|
||||||
public static final String REF_HOST = "refHost";
|
public static final String REF_HOST = "refHost";
|
||||||
@NotEmpty
|
@Required @NotEmpty
|
||||||
public static final String REF_VM = "refVM";
|
public static final String REF_VM = "refVM";
|
||||||
@NotEmpty
|
@DeprecatedField(action=Ignore.class) @NotEmpty
|
||||||
public static final String DOMAIN = "domain";
|
public static final String DOMAIN = "domain";
|
||||||
//@Aggregated
|
|
||||||
@ValidInteger
|
@ValidInteger
|
||||||
public static final String INVOCATION_COUNT = "invocationCount";
|
protected static final String INVOCATION_COUNT = "invocationCount";
|
||||||
//@Aggregated
|
|
||||||
@ValidInteger
|
@ValidInteger
|
||||||
public static final String AVERAGE_INVOCATION_COUNT = "averageInvocationTime";
|
protected static final String AVERAGE_INVOCATION_COUNT = "averageInvocationTime";
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
public static final String SERVICE_CLASS = "serviceClass";
|
public static final String SERVICE_CLASS = "serviceClass";
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
|
@ -78,11 +79,11 @@ public class ServiceUsageRecord extends RawUsageRecord implements SingleUsageRec
|
||||||
setResourceSpecificProperty(REF_VM, refVM);
|
setResourceSpecificProperty(REF_VM, refVM);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDomain() {
|
protected String getDomain() {
|
||||||
return (String) this.resourceSpecificProperties.get(DOMAIN);
|
return (String) this.resourceSpecificProperties.get(DOMAIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDomain(String domain) throws InvalidValueException {
|
protected void setDomain(String domain) throws InvalidValueException {
|
||||||
setResourceSpecificProperty(DOMAIN, domain);
|
setResourceSpecificProperty(DOMAIN, domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,20 +3,21 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.accounting.datamodel.implementations;
|
package org.gcube.accounting.datamodel.implementations;
|
||||||
|
|
||||||
|
import org.gcube.accounting.datamodel.RawUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
||||||
import org.gcube.accounting.datamodel.annotations.NotEmptyIfNotNull;
|
import org.gcube.accounting.datamodel.annotations.NotEmptyIfNotNull;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.Required;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidIP;
|
import org.gcube.accounting.datamodel.annotations.ValidIP;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidInteger;
|
import org.gcube.accounting.datamodel.annotations.ValidInteger;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidLong;
|
import org.gcube.accounting.datamodel.annotations.ValidLong;
|
||||||
import org.gcube.accounting.datamodel.implementations.aggregated.StorageStatusUsageRecord;
|
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class StorageUsageUsageRecord extends StorageStatusUsageRecord implements SingleUsageRecord {
|
public class StorageUsageUsageRecord extends RawUsageRecord implements SingleUsageRecord {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generated Serial Version UID
|
* Generated Serial Version UID
|
||||||
|
@ -24,13 +25,11 @@ public class StorageUsageUsageRecord extends StorageStatusUsageRecord implements
|
||||||
private static final long serialVersionUID = 1381025822586583326L;
|
private static final long serialVersionUID = 1381025822586583326L;
|
||||||
|
|
||||||
@NotEmptyIfNotNull
|
@NotEmptyIfNotNull
|
||||||
public static final String OBJECT_URI = "objectURI";
|
|
||||||
@NotEmpty
|
|
||||||
public static final String OPERATION_TYPE = "operationType";
|
|
||||||
@ValidIP
|
|
||||||
public static final String CALLER_IP = "callerIP";
|
|
||||||
@NotEmpty
|
|
||||||
public static final String PROVIDER_ID = "providerId";
|
public static final String PROVIDER_ID = "providerId";
|
||||||
|
@NotEmptyIfNotNull
|
||||||
|
public static final String OBJECT_URI = "objectURI";
|
||||||
|
@Required @NotEmpty
|
||||||
|
public static final String OPERATION_TYPE = "operationType";
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
public static final String QUALIFIER = "qualifier";
|
public static final String QUALIFIER = "qualifier";
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
|
@ -39,7 +38,8 @@ public class StorageUsageUsageRecord extends StorageStatusUsageRecord implements
|
||||||
public static final String DATA_VOLUME = "dataVolume";
|
public static final String DATA_VOLUME = "dataVolume";
|
||||||
@ValidInteger
|
@ValidInteger
|
||||||
public static final String DATA_COUNT = "dataCount";
|
public static final String DATA_COUNT = "dataCount";
|
||||||
|
@ValidIP
|
||||||
|
public static final String CALLER_IP = "callerIP";
|
||||||
|
|
||||||
public StorageUsageUsageRecord(){
|
public StorageUsageUsageRecord(){
|
||||||
super();
|
super();
|
||||||
|
|
|
@ -7,9 +7,13 @@ import java.util.Calendar;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.RawUsageRecord;
|
import org.gcube.accounting.datamodel.RawUsageRecord;
|
||||||
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
import org.gcube.accounting.datamodel.SingleUsageRecord;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.DeprecatedField;
|
||||||
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.Required;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidInteger;
|
import org.gcube.accounting.datamodel.annotations.ValidInteger;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidLong;
|
import org.gcube.accounting.datamodel.annotations.ValidLong;
|
||||||
|
import org.gcube.accounting.datamodel.validators.ConvertToOperationResult;
|
||||||
|
import org.gcube.accounting.datamodel.validators.Ignore;
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -27,19 +31,19 @@ public class TaskUsageRecord extends RawUsageRecord implements SingleUsageRecord
|
||||||
completed, failed
|
completed, failed
|
||||||
};
|
};
|
||||||
|
|
||||||
@NotEmpty
|
@Required @NotEmpty
|
||||||
public static final String JOB_ID = "jobId";
|
public static final String JOB_ID = "jobId";
|
||||||
@NotEmpty
|
@Required @NotEmpty
|
||||||
public static final String REF_HOST = "refHost";
|
public static final String REF_HOST = "refHost";
|
||||||
@NotEmpty
|
@Required @NotEmpty
|
||||||
public static final String REF_VM = "refVM";
|
public static final String REF_VM = "refVM";
|
||||||
@NotEmpty
|
@DeprecatedField(action=Ignore.class)
|
||||||
public static final String DOMAIN = "domain";
|
protected static final String DOMAIN = "domain";
|
||||||
@ValidLong
|
@Required @ValidLong
|
||||||
public static final String USAGE_START_TIME = "usageStartTime";
|
public static final String USAGE_START_TIME = "usageStartTime";
|
||||||
@ValidLong
|
@Required @ValidLong
|
||||||
public static final String USAGE_END_TIME = "usageEndTime";
|
public static final String USAGE_END_TIME = "usageEndTime";
|
||||||
@NotEmpty
|
@DeprecatedField(action=ConvertToOperationResult.class) @NotEmpty
|
||||||
public static final String USAGE_PHASE = "usagePhase";
|
public static final String USAGE_PHASE = "usagePhase";
|
||||||
@ValidInteger
|
@ValidInteger
|
||||||
public static final String INPUT_FILES_NUMBER = "inputFilesNumber";
|
public static final String INPUT_FILES_NUMBER = "inputFilesNumber";
|
||||||
|
@ -94,13 +98,15 @@ public class TaskUsageRecord extends RawUsageRecord implements SingleUsageRecord
|
||||||
setResourceSpecificProperty(REF_VM, refVM);
|
setResourceSpecificProperty(REF_VM, refVM);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getDomain() {
|
/*
|
||||||
|
private String getDomain() {
|
||||||
return (String) this.resourceSpecificProperties.get(DOMAIN);
|
return (String) this.resourceSpecificProperties.get(DOMAIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDomain(String domain) throws InvalidValueException {
|
private void setDomain(String domain) throws InvalidValueException {
|
||||||
setResourceSpecificProperty(DOMAIN, domain);
|
setResourceSpecificProperty(DOMAIN, domain);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
public Calendar getUsageStartTime() {
|
public Calendar getUsageStartTime() {
|
||||||
long millis = (Long) this.resourceSpecificProperties.get(USAGE_START_TIME);
|
long millis = (Long) this.resourceSpecificProperties.get(USAGE_START_TIME);
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.accounting.datamodel.validators;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import org.gcube.accounting.datamodel.UsageRecord;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.DeprecationAction;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ConvertToOperationResult implements DeprecationAction {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Serializable manage(String key, Serializable manage, UsageRecord usageRecord) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -4,21 +4,20 @@
|
||||||
package org.gcube.accounting.datamodel.validators;
|
package org.gcube.accounting.datamodel.validators;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.lang.annotation.Annotation;
|
|
||||||
|
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public interface FieldValidator<T extends Annotation> {
|
public interface FieldValidator {
|
||||||
|
|
||||||
Class<T> annotation();
|
|
||||||
|
|
||||||
public boolean isValid(Serializable toValidate);
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate (and convert if needed) the provided property
|
||||||
|
* @param toValidate the property to validate
|
||||||
|
* @return the validated (and converted property)
|
||||||
|
* @throws InvalidValueException if the validation (or conversion) fails
|
||||||
|
*/
|
||||||
public Serializable validate(Serializable toValidate) throws InvalidValueException;
|
public Serializable validate(Serializable toValidate) throws InvalidValueException;
|
||||||
|
|
||||||
String getErrorSuffix();
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.accounting.datamodel.validators;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import org.gcube.accounting.datamodel.UsageRecord;
|
||||||
|
import org.gcube.accounting.datamodel.annotations.DeprecationAction;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class Ignore implements DeprecationAction {
|
||||||
|
|
||||||
|
private static Logger logger = LoggerFactory.getLogger(Ignore.class);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritDoc}
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Serializable manage(String key, Serializable manage, UsageRecord usageRecord) {
|
||||||
|
logger.warn("The field {} is deprecated for the {}. Anyway the field will be included in the document",
|
||||||
|
key, usageRecord.getClass().getSimpleName());
|
||||||
|
return manage;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -3,16 +3,9 @@ package org.gcube.accounting.datamodel.validators;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.annotations.NotEmptyIfNotNull;
|
public class NotEmptyIfNotNullValidator extends NotEmptyValidator {
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
|
||||||
|
|
||||||
public class NotEmptyIfNotNullValidator implements FieldValidator<NotEmptyIfNotNull>{
|
protected boolean isValid(Serializable toValidate) {
|
||||||
|
|
||||||
public Class<NotEmptyIfNotNull> annotation() {
|
|
||||||
return NotEmptyIfNotNull.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isValid(Serializable toValidate) {
|
|
||||||
if (toValidate == null) return true;
|
if (toValidate == null) return true;
|
||||||
if (toValidate.getClass().isArray() ){
|
if (toValidate.getClass().isArray() ){
|
||||||
return ((Object[])toValidate).length>0;
|
return ((Object[])toValidate).length>0;
|
||||||
|
@ -25,19 +18,4 @@ public class NotEmptyIfNotNullValidator implements FieldValidator<NotEmptyIfNotN
|
||||||
} else return true;
|
} else return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
|
||||||
try{
|
|
||||||
if(isValid(toValidate)){
|
|
||||||
return toValidate;
|
|
||||||
}
|
|
||||||
}catch(Exception e){
|
|
||||||
throw new InvalidValueException(getErrorSuffix(), e.getCause());
|
|
||||||
}
|
|
||||||
throw new InvalidValueException(getErrorSuffix());
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getErrorSuffix() {
|
|
||||||
return "is empty";
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,16 +3,13 @@ package org.gcube.accounting.datamodel.validators;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.annotations.NotEmpty;
|
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
public class NotEmptyValidator implements FieldValidator<NotEmpty>{
|
public class NotEmptyValidator implements FieldValidator{
|
||||||
|
|
||||||
public Class<NotEmpty> annotation() {
|
private static final String ERROR = "Is Empty";
|
||||||
return NotEmpty.class;
|
|
||||||
}
|
protected boolean isValid(Serializable toValidate) {
|
||||||
|
|
||||||
public boolean isValid(Serializable toValidate) {
|
|
||||||
if (toValidate == null) return false;
|
if (toValidate == null) return false;
|
||||||
if (toValidate.getClass().isArray() ){
|
if (toValidate.getClass().isArray() ){
|
||||||
return ((Object[])toValidate).length>0;
|
return ((Object[])toValidate).length>0;
|
||||||
|
@ -25,19 +22,16 @@ public class NotEmptyValidator implements FieldValidator<NotEmpty>{
|
||||||
} else return true;
|
} else return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
||||||
try{
|
try{
|
||||||
if(isValid(toValidate)){
|
if(isValid(toValidate)){
|
||||||
return toValidate;
|
return toValidate;
|
||||||
}
|
}
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
throw new InvalidValueException(getErrorSuffix(), e.getCause());
|
throw new InvalidValueException(ERROR, e.getCause());
|
||||||
}
|
}
|
||||||
throw new InvalidValueException(getErrorSuffix());
|
throw new InvalidValueException(ERROR);
|
||||||
}
|
|
||||||
|
|
||||||
public String getErrorSuffix() {
|
|
||||||
return "is empty";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,29 +2,18 @@ package org.gcube.accounting.datamodel.validators;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.annotations.NotNull;
|
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
|
public class NotNullValidator implements FieldValidator {
|
||||||
public class NotNullValidator implements FieldValidator<NotNull>{
|
|
||||||
|
|
||||||
public Class<NotNull> annotation() {
|
|
||||||
return NotNull.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isValid(Serializable toValidate) {
|
|
||||||
return toValidate!=null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
private static final String ERROR = "Is Null";
|
||||||
|
|
||||||
|
@Override
|
||||||
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
||||||
if(isValid(toValidate)){
|
if(toValidate!=null){
|
||||||
return toValidate;
|
return toValidate;
|
||||||
}
|
}
|
||||||
throw new InvalidValueException(getErrorSuffix());
|
throw new InvalidValueException(ERROR);
|
||||||
}
|
|
||||||
|
|
||||||
public String getErrorSuffix() {
|
|
||||||
return "is null";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,19 +4,16 @@ import java.io.Serializable;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidLong;
|
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
public class ValidIPValidator implements FieldValidator<ValidLong>{
|
public class ValidIPValidator implements FieldValidator{
|
||||||
|
|
||||||
private static Logger logger = LoggerFactory.getLogger(ValidIPValidator.class);
|
private static Logger logger = LoggerFactory.getLogger(ValidIPValidator.class);
|
||||||
|
|
||||||
public Class<ValidLong> annotation() {
|
private static final String ERROR = "Not valid IP Address";
|
||||||
return ValidLong.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Pattern IPV4_PATTERN = null;
|
private static Pattern IPV4_PATTERN = null;
|
||||||
private static Pattern IPV6_PATTERN = null;
|
private static Pattern IPV6_PATTERN = null;
|
||||||
|
|
||||||
|
@ -44,28 +41,16 @@ public class ValidIPValidator implements FieldValidator<ValidLong>{
|
||||||
return ipV6Matcher.matches();
|
return ipV6Matcher.matches();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isValid(Serializable toValidate) {
|
@Override
|
||||||
try {
|
|
||||||
validate(toValidate);
|
|
||||||
} catch (InvalidValueException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
||||||
try {
|
try {
|
||||||
if(isIpAddress((String) toValidate)){
|
if(isIpAddress((String) toValidate)){
|
||||||
return (String) toValidate;
|
return (String) toValidate;
|
||||||
}
|
}
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
throw new InvalidValueException(getErrorSuffix(), e.getCause());
|
throw new InvalidValueException(ERROR, e.getCause());
|
||||||
}
|
}
|
||||||
throw new InvalidValueException(getErrorSuffix());
|
throw new InvalidValueException(ERROR);
|
||||||
}
|
|
||||||
|
|
||||||
public String getErrorSuffix() {
|
|
||||||
return "not valid IP Address";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,25 +2,14 @@ package org.gcube.accounting.datamodel.validators;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidLong;
|
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
|
|
||||||
public class ValidIntegerValidator implements FieldValidator<ValidLong>{
|
public class ValidIntegerValidator implements FieldValidator {
|
||||||
|
|
||||||
public Class<ValidLong> annotation() {
|
|
||||||
return ValidLong.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isValid(Serializable toValidate) {
|
|
||||||
try {
|
|
||||||
validate(toValidate);
|
|
||||||
} catch (InvalidValueException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
private static final String ERROR = String.format("Not Instance of %s", Integer.class.getSimpleName());
|
||||||
|
|
||||||
|
@Override
|
||||||
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
||||||
if(toValidate instanceof Integer){
|
if(toValidate instanceof Integer){
|
||||||
return toValidate;
|
return toValidate;
|
||||||
|
@ -30,11 +19,7 @@ public class ValidIntegerValidator implements FieldValidator<ValidLong>{
|
||||||
return integerObj;
|
return integerObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new InvalidValueException(getErrorSuffix());
|
throw new InvalidValueException(ERROR);
|
||||||
}
|
|
||||||
|
|
||||||
public String getErrorSuffix() {
|
|
||||||
return String.format("not instace of %s", Integer.class.getSimpleName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,38 +2,27 @@ package org.gcube.accounting.datamodel.validators;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidLong;
|
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
|
|
||||||
public class ValidLongValidator implements FieldValidator<ValidLong>{
|
public class ValidLongValidator implements FieldValidator {
|
||||||
|
|
||||||
public Class<ValidLong> annotation() {
|
private static final String ERROR = String.format("Not Instance of %s", Integer.class.getSimpleName());
|
||||||
return ValidLong.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isValid(Serializable toValidate) {
|
|
||||||
try {
|
|
||||||
validate(toValidate);
|
|
||||||
} catch (InvalidValueException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@Override
|
||||||
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
||||||
if(toValidate instanceof Long){
|
if(toValidate instanceof Long){
|
||||||
return toValidate;
|
return toValidate;
|
||||||
}
|
}
|
||||||
Long longObj = Long.getLong((String) toValidate);
|
try {
|
||||||
if(longObj!=null){
|
Long longObj = Long.getLong((String) toValidate);
|
||||||
return longObj;
|
if(longObj!=null){
|
||||||
|
return longObj;
|
||||||
|
}
|
||||||
|
}catch (Exception e) {
|
||||||
|
throw new InvalidValueException(ERROR, e.getCause());
|
||||||
}
|
}
|
||||||
return false;
|
throw new InvalidValueException(ERROR);
|
||||||
}
|
|
||||||
|
|
||||||
public String getErrorSuffix() {
|
|
||||||
return String.format("not instace of %s", Long.class.getSimpleName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,38 +3,49 @@ package org.gcube.accounting.datamodel.validators;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
import org.gcube.accounting.datamodel.UsageRecord.OperationResult;
|
import org.gcube.accounting.datamodel.UsageRecord.OperationResult;
|
||||||
import org.gcube.accounting.datamodel.annotations.ValidOperationResult;
|
|
||||||
import org.gcube.accounting.exception.InvalidValueException;
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
|
|
||||||
public class ValidOperationResultValidator implements FieldValidator<ValidOperationResult>{
|
public class ValidOperationResultValidator implements FieldValidator {
|
||||||
|
|
||||||
public Class<ValidOperationResult> annotation() {
|
private static final String ERROR = String.format("Not Instance of %s", OperationResult.class.getSimpleName());
|
||||||
return ValidOperationResult.class;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isValid(Serializable toValidate) {
|
|
||||||
try {
|
|
||||||
validate(toValidate);
|
|
||||||
} catch (InvalidValueException e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
@Override
|
||||||
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
public Serializable validate(Serializable toValidate) throws InvalidValueException {
|
||||||
if(toValidate instanceof OperationResult){
|
if(toValidate instanceof OperationResult){
|
||||||
return toValidate;
|
return toValidate;
|
||||||
}
|
}
|
||||||
Integer integerObj = Integer.getInteger((String) toValidate);
|
|
||||||
if(integerObj!=null){
|
try {
|
||||||
return integerObj;
|
if(toValidate instanceof String){
|
||||||
|
try{
|
||||||
|
OperationResult operationResult = OperationResult.valueOf((String) toValidate);
|
||||||
|
if(operationResult !=null){
|
||||||
|
return operationResult;
|
||||||
|
}
|
||||||
|
} catch(Exception e){
|
||||||
|
// Trying another way
|
||||||
|
}
|
||||||
|
|
||||||
|
try{
|
||||||
|
Integer integer = Integer.getInteger((String) toValidate);
|
||||||
|
if(integer!=null){
|
||||||
|
toValidate = integer;
|
||||||
|
}
|
||||||
|
} catch(Exception e){
|
||||||
|
// Trying another way
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(toValidate instanceof Integer){
|
||||||
|
return OperationResult.values()[(Integer) toValidate];
|
||||||
|
}
|
||||||
|
|
||||||
|
}catch(Exception e){
|
||||||
|
throw new InvalidValueException(ERROR, e.getCause());
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new InvalidValueException(getErrorSuffix());
|
throw new InvalidValueException(ERROR);
|
||||||
}
|
|
||||||
|
|
||||||
public String getErrorSuffix() {
|
|
||||||
return String.format("not instace of %s", OperationResult.class.getSimpleName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.gcube.accounting.exception;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Luca Frosini (ISTI - CNR) http://www.lucafrosini.com/
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class ExcludeException extends Exception {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generated serial Version UID
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -4512534842977294L;
|
||||||
|
|
||||||
|
public ExcludeException() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExcludeException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ExcludeException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -22,4 +22,7 @@ public class InternallyReservedKeywordException extends Exception {
|
||||||
super(message);
|
super(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public InternallyReservedKeywordException(String message, Throwable cause) {
|
||||||
|
super(message, cause);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
*/
|
*/
|
||||||
package org.gcube.accounting.datamodel.validators;
|
package org.gcube.accounting.datamodel.validators;
|
||||||
|
|
||||||
|
import org.gcube.accounting.exception.InvalidValueException;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,17 +13,23 @@ import org.junit.Test;
|
||||||
public class ValidTimeValidatorTest {
|
public class ValidTimeValidatorTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testPrimitiveLong(){
|
public void testPrimitiveLong() throws InvalidValueException{
|
||||||
ValidLongValidator validTimeValidator = new ValidLongValidator();
|
ValidLongValidator validTimeValidator = new ValidLongValidator();
|
||||||
long myLong = 4;
|
long myLong = 4;
|
||||||
validTimeValidator.isValid(myLong);
|
validTimeValidator.validate(myLong);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testClassLong(){
|
public void testClassLong() throws InvalidValueException{
|
||||||
ValidLongValidator validTimeValidator = new ValidLongValidator();
|
ValidLongValidator validTimeValidator = new ValidLongValidator();
|
||||||
Long myLong = new Long(4);
|
Long myLong = new Long(4);
|
||||||
validTimeValidator.isValid(myLong);
|
validTimeValidator.validate(myLong);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected=InvalidValueException.class)
|
||||||
|
public void testWrongValue() throws InvalidValueException {
|
||||||
|
ValidLongValidator validTimeValidator = new ValidLongValidator();
|
||||||
|
validTimeValidator.validate("test");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue