You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2013/09/20 15:10:26 UTC
svn commit: r1524988 [1/2] - in /syncope/branches/1_1_X:
common/src/main/java/org/apache/syncope/common/types/
core/src/main/java/org/apache/syncope/core/persistence/beans/
core/src/main/java/org/apache/syncope/core/persistence/beans/user/
core/src/mai...
Author: ilgrosso
Date: Fri Sep 20 13:10:25 2013
New Revision: 1524988
URL: http://svn.apache.org/r1524988
Log:
[SYNCOPE-418] Enforcing name constraints for any schema, resource and configuration
Added:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java
- copied, changed from r1524938, syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaCheck.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameValidator.java
- copied, changed from r1524938, syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfCheck.java (with props)
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfValidator.java (with props)
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ConfTest.java (with props)
Removed:
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaCheck.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaValidator.java
Modified:
syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/EntityViolationType.java
syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/SyncopeClientExceptionType.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerSchema.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSchema.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractVirSchema.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncopeConf.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UDerSchema.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/USchema.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UVirSchema.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/attrvalue/EmailAddressValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/EntitlementValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/InvalidEntityException.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserValidator.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/DerivedSchemaController.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java
syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
syncope/branches/1_1_X/core/src/main/webapp/syncopeClientError.jsp
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/AttrTest.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/NotificationTest.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/SchemaTest.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/VirSchemaTest.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/ConfigurationTestITCase.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/DerivedSchemaTestITCase.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/SchemaTestITCase.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/VirtualSchemaTestITCase.java
Modified: syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/EntityViolationType.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/EntityViolationType.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/EntityViolationType.java (original)
+++ syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/EntityViolationType.java Fri Sep 20 13:10:25 2013
@@ -25,12 +25,12 @@ public enum EntityViolationType {
Standard(""),
InvalidAccountPolicy("org.apache.syncope.core.validation.accountpolicy"),
- InvalidEntitlementName("org.apache.syncope.core.validation.entitlement.name"),
InvalidConnInstanceLocation("org.apache.syncope.core.validation.conninstance.location"),
InvalidMapping("org.apache.syncope.core.validation.mapping"),
InvalidMSchema("org.apache.syncope.core.validation.attrvalue.mSchema"),
InvalidMDerSchema("org.apache.syncope.core.validation.attrvalue.mDerSchema"),
InvalidMVirSchema("org.apache.syncope.core.validation.attrvalue.mVirSchema"),
+ InvalidName("org.apache.syncope.core.validation.name"),
InvalidNotification("org.apache.syncope.core.validation.notification"),
InvalidPassword("org.apache.syncope.core.validation.syncopeuser.password"),
InvalidPasswordPolicy("org.apache.syncope.core.validation.passwordpolicy"),
@@ -42,7 +42,8 @@ public enum EntityViolationType {
InvalidReport("org.apache.syncope.core.validation.report"),
InvalidResource("org.apache.syncope.core.validation.externalresource"),
InvalidRoleOwner("org.apache.syncope.core.validation.syncoperole.owner"),
- InvalidSchemaTypeSpecification("org.apache.syncope.core.validation.attrvalue.schemaTypeSpecification"),
+ InvalidSchemaEnum("org.apache.syncope.core.validation.schema.enum"),
+ InvalidSchemaMultivalueUnique("org.apache.syncope.core.validation.schema.multivalueUnique"),
InvalidSchedTask("org.apache.syncope.core.validation.schedtask"),
InvalidSyncTask("org.apache.syncope.core.validation.synctask"),
InvalidSyncPolicy("org.apache.syncope.core.validation.syncpolicy"),
@@ -51,7 +52,6 @@ public enum EntityViolationType {
InvalidUVirSchema("org.apache.syncope.core.validation.attrvalue.uVirSchema"),
InvalidUsername("org.apache.syncope.core.validation.syncopeuser.username"),
InvalidValueList("org.apache.syncope.core.validation.attr.valueList"),
- MultivalueAndUniqueConstraint("org.apache.syncope.core.validation.schema.multivalueAndUniqueConstraint"),
MoreThanOneNonNull("org.apache.syncope.core.validation.attrvalue.moreThanOneNonNull");
private String message;
Modified: syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/SyncopeClientExceptionType.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/SyncopeClientExceptionType.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/SyncopeClientExceptionType.java (original)
+++ syncope/branches/1_1_X/common/src/main/java/org/apache/syncope/common/types/SyncopeClientExceptionType.java Fri Sep 20 13:10:25 2013
@@ -42,16 +42,17 @@ public enum SyncopeClientExceptionType {
InvalidPropagationTaskExecReport(
"Syncope.InvalidPropagationTaskExecReport",
"Syncope.InvalidPropagationTaskExecReport.element"),
- InvalidUSchema("Syncope.InvalidUSchemaUpdate", "Syncope.InvalidUSchemaUpdate.name"),
- InvalidUDerSchema("Syncope.InvalidUDerSchemaUpdate", "Syncope.InvalidUDerSchemaUpdate.name"),
- InvalidUVirSchema("Syncope.InvalidUVirSchemaUpdate", "Syncope.InvalidUVirSchemaUpdate.name"),
- InvalidRSchema("Syncope.InvalidRSchemaUpdate", "Syncope.InvalidRSchemaUpdate.name"),
- InvalidRDerSchema("Syncope.InvalidRDerSchemaUpdate", "Syncope.InvalidRDerSchemaUpdate.name"),
- InvalidRVirSchema("Syncope.InvalidRVirSchemaUpdate", "Syncope.InvalidRVirSchemaUpdate.name"),
- InvalidMSchema("Syncope.InvalidMSchemaUpdate", "Syncope.InvalidMSchemaUpdate.name"),
- InvalidMDerSchema("Syncope.InvalidMDerSchemaUpdate", "Syncope.InvalidMDerSchemaUpdate.name"),
- InvalidMVirSchema("Syncope.InvalidMVirSchemaUpdate", "Syncope.InvalidMVirSchemaUpdate.name"),
- InvalidSchemaMapping("Syncope.InvalidSchemaMapping", ""),
+ InvalidUSchema("Syncope.InvalidUSchema", "Syncope.InvalidUSchema.name"),
+ InvalidUDerSchema("Syncope.InvalidUDerSchema", "Syncope.InvalidUDerSchema.name"),
+ InvalidUVirSchema("Syncope.InvalidUVirSchema", "Syncope.InvalidUVirSchema.name"),
+ InvalidRSchema("Syncope.InvalidRSchema", "Syncope.InvalidRSchema.name"),
+ InvalidRDerSchema("Syncope.InvalidRDerSchema", "Syncope.InvalidRDerSchema.name"),
+ InvalidRVirSchema("Syncope.InvalidRVirSchema", "Syncope.InvalidRVirSchema.name"),
+ InvalidMSchema("Syncope.InvalidMSchema", "Syncope.InvalidMSchema.name"),
+ InvalidMDerSchema("Syncope.InvalidMDerSchema", "Syncope.InvalidMDerSchema.name"),
+ InvalidMVirSchema("Syncope.InvalidMVirSchema", "Syncope.InvalidMVirSchema.name"),
+ InvalidSchemaMapping("Syncope.InvalidSchemaMapping", "Syncope.InvalidSchemaMapping.name"),
+ InvalidSyncopeConf("Syncope.InvalidSyncopeConf", "Syncope.InvalidSyncopeConf.name"),
InvalidSyncopeUser("Syncope.InvalidSyncopeUser", "Syncope.InvalidSyncopeUser.element"),
InvalidExternalResource("Syncope.InvalidExternalResource", "Syncope.InvalidExternalResource.element"),
InvalidNotification("Syncope.InvalidNotification", "Syncope.InvalidNotification.element"),
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerSchema.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerSchema.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerSchema.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractDerSchema.java Fri Sep 20 13:10:25 2013
@@ -22,8 +22,10 @@ import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import org.apache.syncope.common.types.AttributeSchemaType;
+import org.apache.syncope.core.persistence.validation.entity.SchemaNameCheck;
@MappedSuperclass
+@SchemaNameCheck
public abstract class AbstractDerSchema extends AbstractBaseBean {
private static final long serialVersionUID = -6173643493348674060L;
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSchema.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSchema.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSchema.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractSchema.java Fri Sep 20 13:10:25 2013
@@ -34,9 +34,11 @@ import org.apache.syncope.common.types.A
import org.apache.syncope.core.persistence.validation.attrvalue.AbstractValidator;
import org.apache.syncope.core.persistence.validation.attrvalue.BasicValidator;
import org.apache.syncope.core.persistence.validation.entity.SchemaCheck;
+import org.apache.syncope.core.persistence.validation.entity.SchemaNameCheck;
@MappedSuperclass
@SchemaCheck
+@SchemaNameCheck
public abstract class AbstractSchema extends AbstractBaseBean {
public static String enumValuesSeparator = ";";
@@ -151,7 +153,7 @@ public abstract class AbstractSchema ext
if (getValidatorClass() != null && getValidatorClass().length() > 0) {
try {
Constructor validatorConstructor = Class.forName(getValidatorClass()).getConstructor(
- new Class[]{getClass().getSuperclass()});
+ new Class[] {getClass().getSuperclass()});
validator = (AbstractValidator) validatorConstructor.newInstance(this);
} catch (Exception e) {
LOG.error("Could not instantiate validator of type " + getValidatorClass()
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractVirSchema.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractVirSchema.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractVirSchema.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/AbstractVirSchema.java Fri Sep 20 13:10:25 2013
@@ -25,13 +25,15 @@ import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import org.apache.syncope.common.types.AttributeSchemaType;
+import org.apache.syncope.core.persistence.validation.entity.SchemaNameCheck;
@MappedSuperclass
+@SchemaNameCheck
public abstract class AbstractVirSchema extends AbstractBaseBean {
@Id
private String name;
-
+
@Basic
@Min(0)
@Max(1)
@@ -74,5 +76,4 @@ public abstract class AbstractVirSchema
public void setReadonly(final boolean readonly) {
this.readonly = getBooleanAsInteger(readonly);
}
-
}
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncopeConf.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncopeConf.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncopeConf.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/SyncopeConf.java Fri Sep 20 13:10:25 2013
@@ -21,8 +21,10 @@ package org.apache.syncope.core.persiste
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
+import org.apache.syncope.core.persistence.validation.entity.SyncopeConfCheck;
@Entity
+@SyncopeConfCheck
public class SyncopeConf extends AbstractBaseBean {
private static final long serialVersionUID = -899341077670090120L;
@@ -38,7 +40,7 @@ public class SyncopeConf extends Abstrac
return key;
}
- public void setKey(String key) {
+ public void setKey(final String key) {
this.key = key;
}
@@ -46,7 +48,7 @@ public class SyncopeConf extends Abstrac
return value;
}
- public void setValue(String value) {
+ public void setValue(final String value) {
this.value = value;
}
}
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UDerSchema.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UDerSchema.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UDerSchema.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UDerSchema.java Fri Sep 20 13:10:25 2013
@@ -20,10 +20,8 @@ package org.apache.syncope.core.persiste
import javax.persistence.Entity;
import org.apache.syncope.core.persistence.beans.AbstractDerSchema;
-import org.apache.syncope.core.persistence.validation.entity.USchemaCheck;
@Entity
-@USchemaCheck
public class UDerSchema extends AbstractDerSchema {
private static final long serialVersionUID = 6244467775394201229L;
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/USchema.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/USchema.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/USchema.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/USchema.java Fri Sep 20 13:10:25 2013
@@ -21,11 +21,9 @@ package org.apache.syncope.core.persiste
import javax.persistence.Cacheable;
import javax.persistence.Entity;
import org.apache.syncope.core.persistence.beans.AbstractSchema;
-import org.apache.syncope.core.persistence.validation.entity.USchemaCheck;
@Entity
@Cacheable
-@USchemaCheck
public class USchema extends AbstractSchema {
private static final long serialVersionUID = -2776513645999914610L;
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UVirSchema.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UVirSchema.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UVirSchema.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/beans/user/UVirSchema.java Fri Sep 20 13:10:25 2013
@@ -21,11 +21,9 @@ package org.apache.syncope.core.persiste
import javax.persistence.Cacheable;
import javax.persistence.Entity;
import org.apache.syncope.core.persistence.beans.AbstractVirSchema;
-import org.apache.syncope.core.persistence.validation.entity.USchemaCheck;
@Entity
@Cacheable
-@USchemaCheck
public class UVirSchema extends AbstractVirSchema {
private static final long serialVersionUID = 1089308700791426201L;
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/attrvalue/EmailAddressValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/attrvalue/EmailAddressValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/attrvalue/EmailAddressValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/attrvalue/EmailAddressValidator.java Fri Sep 20 13:10:25 2013
@@ -39,11 +39,9 @@ public class EmailAddressValidator exten
@Override
protected void doValidate(final AbstractAttrValue attributeValue) throws InvalidAttrValueException {
-
- Matcher matcher = EMAIL_PATTERN.matcher((CharSequence) attributeValue.getValue());
+ Matcher matcher = EMAIL_PATTERN.matcher(attributeValue.<CharSequence>getValue());
if (!matcher.matches()) {
- String error = "\"" + attributeValue.getValue() + "\" is not a valid email address";
- throw new InvalidAttrValueException(error);
+ throw new InvalidAttrValueException("\"" + attributeValue.getValue() + "\" is not a valid email address");
}
}
}
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AbstractValidator.java Fri Sep 20 13:10:25 2013
@@ -18,17 +18,28 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
+import java.lang.annotation.Annotation;
+import java.util.regex.Pattern;
+import javax.validation.ConstraintValidator;
import org.apache.syncope.common.types.EntityViolationType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-public abstract class AbstractValidator {
+public abstract class AbstractValidator<A extends Annotation, T> implements ConstraintValidator<A, T> {
/**
* Logger.
*/
protected static final Logger LOG = LoggerFactory.getLogger(AbstractValidator.class);
+ protected static final Pattern NAME_PATTERN =
+ Pattern.compile("^[\\w \\-@.]+", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CHARACTER_CLASS);
+
+ @Override
+ public void initialize(final A annotation) {
+ // no initialization
+ }
+
protected final String getTemplate(final EntityViolationType type, final String message) {
return type.name() + ";" + message;
}
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValidator.java Fri Sep 20 13:10:25 2013
@@ -18,20 +18,14 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.core.persistence.beans.AbstractAttr;
-public class AttrValidator extends AbstractValidator implements ConstraintValidator<AttrCheck, AbstractAttr> {
-
- @Override
- public void initialize(final AttrCheck constraintAnnotation) {
- }
+public class AttrValidator extends AbstractValidator<AttrCheck, AbstractAttr> {
@Override
public boolean isValid(final AbstractAttr object, final ConstraintValidatorContext context) {
-
boolean isValid;
if (object == null) {
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/AttrValueValidator.java Fri Sep 20 13:10:25 2013
@@ -18,23 +18,16 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.core.persistence.beans.AbstractAttrUniqueValue;
import org.apache.syncope.core.persistence.beans.AbstractAttrValue;
import org.apache.syncope.core.persistence.beans.AbstractSchema;
-public class AttrValueValidator extends AbstractValidator implements
- ConstraintValidator<AttrValueCheck, AbstractAttrValue> {
-
- @Override
- public void initialize(final AttrValueCheck constraintAnnotation) {
- }
+public class AttrValueValidator extends AbstractValidator<AttrValueCheck, AbstractAttrValue> {
@Override
public boolean isValid(final AbstractAttrValue object, final ConstraintValidatorContext context) {
-
boolean isValid;
if (object == null) {
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ConnInstanceValidator.java Fri Sep 20 13:10:25 2013
@@ -18,24 +18,17 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.core.persistence.beans.ConnInstance;
import org.apache.syncope.core.util.URIUtil;
-public class ConnInstanceValidator extends AbstractValidator implements
- ConstraintValidator<ConnInstanceCheck, ConnInstance> {
-
- private static final String[] ALLOWED_SCHEMES = {"file", "connid", "connids"};
-
- @Override
- public void initialize(final ConnInstanceCheck constraintAnnotation) {
- }
+public class ConnInstanceValidator extends AbstractValidator<ConnInstanceCheck, ConnInstance> {
@Override
public boolean isValid(final ConnInstance connInstance, final ConstraintValidatorContext context) {
boolean isValid = true;
+
try {
URIUtil.buildForConnId(connInstance.getLocation());
} catch (Exception e) {
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/EntitlementValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/EntitlementValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/EntitlementValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/EntitlementValidator.java Fri Sep 20 13:10:25 2013
@@ -20,24 +20,17 @@ package org.apache.syncope.core.persiste
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.core.persistence.beans.Entitlement;
-public class EntitlementValidator extends AbstractValidator implements
- ConstraintValidator<EntitlementCheck, Entitlement> {
+public class EntitlementValidator extends AbstractValidator<EntitlementCheck, Entitlement> {
private static final Pattern ROLE_ENTITLEMENT_NAME_PATTERN = Pattern.compile("^ROLE_([\\d])+");
@Override
- public void initialize(final EntitlementCheck constraintAnnotation) {
- }
-
- @Override
public boolean isValid(final Entitlement object, final ConstraintValidatorContext context) {
-
- boolean isValid = false;
+ boolean isValid;
if (object == null) {
isValid = true;
@@ -54,7 +47,7 @@ public class EntitlementValidator extend
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate(getTemplate(
- EntityViolationType.InvalidEntitlementName, object + " cannot have name starting by ROLE_")).
+ EntityViolationType.InvalidName, object + " cannot have name starting by ROLE_")).
addNode("name").addConstraintViolation();
}
}
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ExternalResourceValidator.java Fri Sep 20 13:10:25 2013
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.commons.lang.StringUtils;
import org.apache.syncope.common.types.EntityViolationType;
@@ -27,12 +26,7 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.beans.ExternalResource;
import org.apache.syncope.core.propagation.PropagationActions;
-public class ExternalResourceValidator extends AbstractValidator implements
- ConstraintValidator<ExternalResourceCheck, ExternalResource> {
-
- @Override
- public void initialize(final ExternalResourceCheck constraintAnnotation) {
- }
+public class ExternalResourceValidator extends AbstractValidator<ExternalResourceCheck, ExternalResource> {
private boolean isValid(final AbstractMappingItem item, final ConstraintValidatorContext context) {
if (StringUtils.isBlank(item.getExtAttrName())) {
@@ -104,6 +98,13 @@ public class ExternalResourceValidator e
public boolean isValid(final ExternalResource resource, final ConstraintValidatorContext context) {
context.disableDefaultConstraintViolation();
+ if (!NAME_PATTERN.matcher(resource.getName()).matches()) {
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidName, "Invalid Resource name")).
+ addNode("name").addConstraintViolation();
+ return false;
+ }
+
if (StringUtils.isNotBlank(resource.getPropagationActionsClassName())) {
Class<?> actionsClass = null;
boolean isAssignable = false;
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/InvalidEntityException.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/InvalidEntityException.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/InvalidEntityException.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/InvalidEntityException.java Fri Sep 20 13:10:25 2013
@@ -32,7 +32,7 @@ public class InvalidEntityException exte
private String entityClassSimpleName;
- private final Map<Class, Set<EntityViolationType>> violations;
+ private final Map<Class<?>, Set<EntityViolationType>> violations;
public InvalidEntityException(final String entityClassSimpleName,
final Set<ConstraintViolation<Object>> violations) {
@@ -41,7 +41,7 @@ public class InvalidEntityException exte
this.entityClassSimpleName = entityClassSimpleName;
- this.violations = new HashMap<Class, Set<EntityViolationType>>();
+ this.violations = new HashMap<Class<?>, Set<EntityViolationType>>();
for (ConstraintViolation<Object> violation : violations) {
int firstComma = violation.getMessageTemplate().indexOf(';');
@@ -70,7 +70,7 @@ public class InvalidEntityException exte
public final boolean hasViolation(final EntityViolationType type) {
boolean found = false;
- for (Class entity : violations.keySet()) {
+ for (Class<?> entity : violations.keySet()) {
if (violations.get(entity).contains(type)) {
found = true;
}
@@ -83,7 +83,7 @@ public class InvalidEntityException exte
return entityClassSimpleName;
}
- public final Map<Class, Set<EntityViolationType>> getViolations() {
+ public final Map<Class<?>, Set<EntityViolationType>> getViolations() {
return violations;
}
@@ -91,7 +91,7 @@ public class InvalidEntityException exte
public String getMessage() {
StringBuilder sb = new StringBuilder();
- for (Class entity : violations.keySet()) {
+ for (Class<?> entity : violations.keySet()) {
sb.append(entity.getSimpleName()).append(" ").append(violations.get(entity).toString()).append(", ");
}
sb.delete(sb.lastIndexOf(", "), sb.length());
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/NotificationValidator.java Fri Sep 20 13:10:25 2013
@@ -18,22 +18,15 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.core.persistence.beans.Notification;
-public class NotificationValidator extends AbstractValidator implements
- ConstraintValidator<NotificationCheck, Notification> {
-
- @Override
- public void initialize(final NotificationCheck constraintAnnotation) {
- }
+public class NotificationValidator extends AbstractValidator<NotificationCheck, Notification> {
@Override
public boolean isValid(final Notification value, final ConstraintValidatorContext context) {
-
context.disableDefaultConstraintViolation();
boolean isValid = true;
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PolicyValidator.java Fri Sep 20 13:10:25 2013
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.AccountPolicySpec;
import org.apache.syncope.common.types.EntityViolationType;
@@ -31,16 +30,12 @@ import org.apache.syncope.core.persisten
import org.apache.syncope.core.persistence.dao.PolicyDAO;
import org.springframework.beans.factory.annotation.Autowired;
-public class PolicyValidator extends AbstractValidator implements ConstraintValidator<PolicyCheck, Policy> {
+public class PolicyValidator extends AbstractValidator<PolicyCheck, Policy> {
@Autowired
private PolicyDAO policyDAO;
@Override
- public void initialize(final PolicyCheck constraintAnnotation) {
- }
-
- @Override
public boolean isValid(final Policy object, final ConstraintValidatorContext context) {
context.disableDefaultConstraintViolation();
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/PropagationTaskValidator.java Fri Sep 20 13:10:25 2013
@@ -20,7 +20,6 @@ package org.apache.syncope.core.persiste
import java.util.List;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.EntityViolationType;
@@ -28,16 +27,10 @@ import org.apache.syncope.common.types.P
import org.apache.syncope.core.persistence.beans.PropagationTask;
import org.apache.syncope.core.persistence.beans.TaskExec;
-public class PropagationTaskValidator extends AbstractValidator implements
- ConstraintValidator<PropagationTaskCheck, PropagationTask> {
-
- @Override
- public void initialize(final PropagationTaskCheck constraintAnnotation) {
- }
+public class PropagationTaskValidator extends AbstractValidator<PropagationTaskCheck, PropagationTask> {
@Override
public boolean isValid(final PropagationTask task, final ConstraintValidatorContext context) {
-
boolean isValid;
if (task == null) {
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/ReportValidator.java Fri Sep 20 13:10:25 2013
@@ -22,7 +22,6 @@ import java.text.ParseException;
import java.util.HashSet;
import java.util.Set;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.report.ReportletConf;
@@ -30,16 +29,11 @@ import org.apache.syncope.common.types.E
import org.apache.syncope.core.persistence.beans.Report;
import org.quartz.CronExpression;
-public class ReportValidator extends AbstractValidator implements ConstraintValidator<ReportCheck, Report> {
-
- @Override
- public void initialize(final ReportCheck constraintAnnotation) {
- }
+public class ReportValidator extends AbstractValidator<ReportCheck, Report> {
@Override
@SuppressWarnings("ResultOfObjectAllocationIgnored")
public boolean isValid(final Report object, final ConstraintValidatorContext context) {
-
boolean isValid = true;
if (object.getCronExpression() != null) {
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchedTaskValidator.java Fri Sep 20 13:10:25 2013
@@ -20,7 +20,6 @@ package org.apache.syncope.core.persiste
import java.text.ParseException;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.EntityViolationType;
@@ -28,16 +27,11 @@ import org.apache.syncope.core.persisten
import org.quartz.CronExpression;
import org.quartz.Job;
-public class SchedTaskValidator extends AbstractValidator implements ConstraintValidator<SchedTaskCheck, SchedTask> {
-
- @Override
- public void initialize(final SchedTaskCheck constraintAnnotation) {
- }
+public class SchedTaskValidator extends AbstractValidator<SchedTaskCheck, SchedTask> {
@Override
public boolean isValid(final SchedTask object, final ConstraintValidatorContext context) {
-
- boolean isValid = true;
+ boolean isValid;
Class<?> jobClass = null;
try {
Copied: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java (from r1524938, syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaCheck.java)
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java?p2=syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java&p1=syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaCheck.java&r1=1524938&r2=1524988&rev=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaCheck.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameCheck.java Fri Sep 20 13:10:25 2013
@@ -29,9 +29,9 @@ import javax.validation.Payload;
@Target( { ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
-@Constraint(validatedBy = USchemaValidator.class)
+@Constraint(validatedBy = SchemaNameValidator.class)
@Documented
-public @interface USchemaCheck {
+public @interface SchemaNameCheck {
String message() default "{org.apache.syncope.core.validation.schema}";
Copied: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameValidator.java (from r1524938, syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaValidator.java)
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameValidator.java?p2=syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameValidator.java&p1=syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaValidator.java&r1=1524938&r2=1524988&rev=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/USchemaValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaNameValidator.java Fri Sep 20 13:10:25 2013
@@ -18,66 +18,110 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import java.util.Arrays;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
import java.util.List;
+import java.util.Map;
-import javax.persistence.Transient;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
+import org.apache.commons.lang3.ClassUtils;
import org.apache.syncope.common.types.EntityViolationType;
+import org.apache.syncope.core.persistence.beans.membership.MDerSchema;
+import org.apache.syncope.core.persistence.beans.membership.MSchema;
+import org.apache.syncope.core.persistence.beans.membership.MVirSchema;
+import org.apache.syncope.core.persistence.beans.membership.Membership;
+import org.apache.syncope.core.persistence.beans.role.RDerSchema;
+import org.apache.syncope.core.persistence.beans.role.RSchema;
+import org.apache.syncope.core.persistence.beans.role.RVirSchema;
+import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
+import org.apache.syncope.core.persistence.beans.user.SyncopeUser;
import org.apache.syncope.core.persistence.beans.user.UDerSchema;
import org.apache.syncope.core.persistence.beans.user.USchema;
import org.apache.syncope.core.persistence.beans.user.UVirSchema;
-public class USchemaValidator extends AbstractValidator implements ConstraintValidator<USchemaCheck, Object> {
+public class SchemaNameValidator extends AbstractValidator<SchemaNameCheck, Object> {
- @Transient
- private static List<String> PERMITTED_USCHEMA_NAMES = Arrays.asList(new String[]{"failedLogins", "username",
- "password", "lastLoginDate", "creationDate", "changePwdDate"});
+ private static final List<String> UNALLOWED_USCHEMA_NAMES = new ArrayList<String>();
- @Override
- public void initialize(final USchemaCheck constraintAnnotation) {
- }
+ private static final List<String> UNALLOWED_MSCHEMA_NAMES = new ArrayList<String>();
- @Override
- public boolean isValid(final Object object, final ConstraintValidatorContext context) {
+ private static final List<String> UNALLOWED_RSCHEMA_NAMES = new ArrayList<String>();
- EntityViolationType violation = null;
+ static {
+ initUnallowedSchemaNames(SyncopeUser.class, UNALLOWED_USCHEMA_NAMES);
+ initUnallowedSchemaNames(Membership.class, UNALLOWED_MSCHEMA_NAMES);
+ initUnallowedSchemaNames(SyncopeRole.class, UNALLOWED_RSCHEMA_NAMES);
+ }
- try {
- if (object != null) {
- final String schemaName;
-
- if (object instanceof USchema) {
- schemaName = ((USchema) object).getName();
- violation = EntityViolationType.InvalidUSchema;
- } else if (object instanceof UDerSchema) {
- schemaName = ((UDerSchema) object).getName();
- violation = EntityViolationType.InvalidUDerSchema;
- } else if (object instanceof UVirSchema) {
- schemaName = ((UVirSchema) object).getName();
- violation = EntityViolationType.InvalidUVirSchema;
- } else {
- schemaName = null;
- }
+ private static void initUnallowedSchemaNames(final Class<?> entityClass, final List<String> names) {
+ List<Class<?>> classes = ClassUtils.getAllSuperclasses(entityClass);
+ classes.add(SyncopeUser.class);
+ for (Class<?> clazz : classes) {
+ for (Field field : clazz.getDeclaredFields()) {
+ if (!Collection.class.isAssignableFrom(field.getType())
+ && !Map.class.isAssignableFrom(field.getType())) {
- if (PERMITTED_USCHEMA_NAMES.contains(schemaName)) {
- throw new Exception("Schema name not permitted");
+ names.add(field.getName());
}
}
+ }
+ }
- return true;
- } catch (Exception e) {
- LOG.error("Error saving schema", e);
+ @Override
+ public boolean isValid(final Object object, final ConstraintValidatorContext context) {
+ final String schemaName;
+ final List<String> unallowedNames;
- context.disableDefaultConstraintViolation();
+ if (object instanceof USchema) {
+ schemaName = ((USchema) object).getName();
+ unallowedNames = UNALLOWED_USCHEMA_NAMES;
+ } else if (object instanceof UDerSchema) {
+ schemaName = ((UDerSchema) object).getName();
+ unallowedNames = UNALLOWED_USCHEMA_NAMES;
+ } else if (object instanceof UVirSchema) {
+ schemaName = ((UVirSchema) object).getName();
+ unallowedNames = UNALLOWED_USCHEMA_NAMES;
+ } else if (object instanceof MSchema) {
+ schemaName = ((MSchema) object).getName();
+ unallowedNames = UNALLOWED_MSCHEMA_NAMES;
+ } else if (object instanceof MDerSchema) {
+ schemaName = ((MDerSchema) object).getName();
+ unallowedNames = UNALLOWED_MSCHEMA_NAMES;
+ } else if (object instanceof MVirSchema) {
+ schemaName = ((MVirSchema) object).getName();
+ unallowedNames = UNALLOWED_MSCHEMA_NAMES;
+ } else if (object instanceof RSchema) {
+ schemaName = ((RSchema) object).getName();
+ unallowedNames = UNALLOWED_RSCHEMA_NAMES;
+ } else if (object instanceof RDerSchema) {
+ schemaName = ((RDerSchema) object).getName();
+ unallowedNames = UNALLOWED_RSCHEMA_NAMES;
+ } else if (object instanceof RVirSchema) {
+ schemaName = ((RVirSchema) object).getName();
+ unallowedNames = UNALLOWED_RSCHEMA_NAMES;
+ } else {
+ schemaName = null;
+ unallowedNames = Collections.emptyList();
+ }
+ boolean isValid = NAME_PATTERN.matcher(schemaName).matches();
+ if (!isValid) {
+ context.disableDefaultConstraintViolation();
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidName, "Invalid Schema name")).
+ addNode("name").addConstraintViolation();
+ } else if (unallowedNames.contains(schemaName)) {
+ context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate(
- getTemplate(violation, e.getMessage())).
- addNode(object.getClass().getSimpleName()).addConstraintViolation();
+ getTemplate(EntityViolationType.InvalidName, "Schema name not allowed: " + schemaName)).
+ addNode("name").addConstraintViolation();
return false;
}
+
+ return isValid;
}
}
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SchemaValidator.java Fri Sep 20 13:10:25 2013
@@ -18,58 +18,35 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
+import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.common.types.AttributeSchemaType;
import org.apache.syncope.core.persistence.beans.AbstractSchema;
-public class SchemaValidator extends AbstractValidator implements ConstraintValidator<SchemaCheck, AbstractSchema> {
+public class SchemaValidator extends AbstractValidator<SchemaCheck, AbstractSchema> {
@Override
- public void initialize(final SchemaCheck constraintAnnotation) {
- }
-
- @Override
- public boolean isValid(final AbstractSchema object, final ConstraintValidatorContext context) {
-
- boolean isValid = false;
- EntityViolationType violation = null;
-
- try {
- if (object == null) {
- isValid = true;
- } else {
- isValid = object.getType() == null || !object.getType().equals(AttributeSchemaType.Enum)
- || object.getEnumerationValues() != null;
-
- if (!isValid) {
- violation = EntityViolationType.InvalidSchemaTypeSpecification;
-
- throw new Exception(object + " miss enumeration values");
- }
-
- isValid = object.isMultivalue()
- ? !object.isUniqueConstraint()
- : true;
-
- if (!isValid) {
- violation = EntityViolationType.MultivalueAndUniqueConstraint;
-
- throw new Exception(object + " cannot be multivalue and have unique constraint at the same time");
- }
- }
-
- return isValid;
- } catch (Exception e) {
- LOG.error("Error saving schema", e);
-
+ public boolean isValid(final AbstractSchema schema, final ConstraintValidatorContext context) {
+ boolean isValid = schema.getType() != AttributeSchemaType.Enum
+ || StringUtils.isNotBlank(schema.getEnumerationValues());
+ if (!isValid) {
context.disableDefaultConstraintViolation();
- context.buildConstraintViolationWithTemplate(getTemplate(violation, e.getMessage())).
- addNode(object.getClass().getSimpleName()).addConstraintViolation();
-
- return false;
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidSchemaEnum, "Enumeration values missing")).
+ addNode("enumerationValues").addConstraintViolation();
+ } else {
+ isValid = !schema.isMultivalue() || !schema.isUniqueConstraint();
+ if (!isValid) {
+ context.disableDefaultConstraintViolation();
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidSchemaMultivalueUnique,
+ "Cannot contemporary be multivalue and have unique constraint")).
+ addNode("multiValue").addConstraintViolation();
+ }
}
+
+ return isValid;
}
}
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncTaskValidator.java Fri Sep 20 13:10:25 2013
@@ -18,7 +18,6 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.commons.lang.StringUtils;
@@ -26,7 +25,7 @@ import org.apache.syncope.common.types.E
import org.apache.syncope.core.persistence.beans.SyncTask;
import org.apache.syncope.core.sync.SyncActions;
-public class SyncTaskValidator extends AbstractValidator implements ConstraintValidator<SyncTaskCheck, SyncTask> {
+public class SyncTaskValidator extends AbstractValidator<SyncTaskCheck, SyncTask> {
private final SchedTaskValidator schedV;
@@ -37,49 +36,38 @@ public class SyncTaskValidator extends A
}
@Override
- public void initialize(final SyncTaskCheck constraintAnnotation) {
- }
-
- @Override
public boolean isValid(final SyncTask object, final ConstraintValidatorContext context) {
+ boolean isValid = schedV.isValid(object, context);
+
+ if (isValid) {
+ isValid = object.getResource() != null;
+ if (!isValid) {
+ LOG.error("Resource is null");
+
+ context.disableDefaultConstraintViolation();
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidSyncTask, "Resource cannot be null")).
+ addNode("resource").addConstraintViolation();
+ }
- boolean isValid;
+ if (StringUtils.isNotBlank(object.getActionsClassName())) {
+ Class<?> actionsClass = null;
+ boolean isAssignable = false;
+ try {
+ actionsClass = Class.forName(object.getActionsClassName());
+ isAssignable = SyncActions.class.isAssignableFrom(actionsClass);
+ } catch (Exception e) {
+ LOG.error("Invalid SyncActions specified", e);
+ isValid = false;
+ }
- if (object == null) {
- isValid = true;
- } else {
- isValid = schedV.isValid(object, context);
-
- if (isValid) {
- isValid = object.getResource() != null;
- if (!isValid) {
- LOG.error("Resource is null");
+ if (actionsClass == null || !isAssignable) {
+ isValid = false;
context.disableDefaultConstraintViolation();
context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidSyncTask, "Resource cannot be null")).
- addNode("resource").addConstraintViolation();
- }
-
- if (StringUtils.isNotBlank(object.getActionsClassName())) {
- Class<?> actionsClass = null;
- boolean isAssignable = false;
- try {
- actionsClass = Class.forName(object.getActionsClassName());
- isAssignable = SyncActions.class.isAssignableFrom(actionsClass);
- } catch (Exception e) {
- LOG.error("Invalid SyncActions specified", e);
- isValid = false;
- }
-
- if (actionsClass == null || !isAssignable) {
- isValid = false;
-
- context.disableDefaultConstraintViolation();
- context.buildConstraintViolationWithTemplate(
- getTemplate(EntityViolationType.InvalidSyncTask, "Invalid class name")).
- addNode("actionsClassName").addConstraintViolation();
- }
+ getTemplate(EntityViolationType.InvalidSyncTask, "Invalid class name")).
+ addNode("actionsClassName").addConstraintViolation();
}
}
}
Added: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfCheck.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfCheck.java?rev=1524988&view=auto
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfCheck.java (added)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfCheck.java Fri Sep 20 13:10:25 2013
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.validation.entity;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import javax.validation.Constraint;
+import javax.validation.Payload;
+
+@Target({ElementType.TYPE})
+@Retention(RetentionPolicy.RUNTIME)
+@Constraint(validatedBy = SyncopeConfValidator.class)
+@Documented
+public @interface SyncopeConfCheck {
+
+ String message() default "{org.apache.syncope.core.validation.syncopeConf}";
+
+ Class<?>[] groups() default {};
+
+ Class<? extends Payload>[] payload() default {};
+}
Propchange: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfCheck.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfCheck.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfCheck.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfValidator.java?rev=1524988&view=auto
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfValidator.java (added)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfValidator.java Fri Sep 20 13:10:25 2013
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.validation.entity;
+
+import javax.validation.ConstraintValidatorContext;
+import org.apache.syncope.common.types.EntityViolationType;
+import org.apache.syncope.core.persistence.beans.SyncopeConf;
+
+public class SyncopeConfValidator extends AbstractValidator<SyncopeConfCheck, SyncopeConf> {
+
+ @Override
+ public boolean isValid(final SyncopeConf syncopeConf, final ConstraintValidatorContext context) {
+ boolean isValid = true;
+
+ if (!NAME_PATTERN.matcher(syncopeConf.getKey()).matches()) {
+ isValid = false;
+
+ context.disableDefaultConstraintViolation();
+ context.buildConstraintViolationWithTemplate(
+ getTemplate(EntityViolationType.InvalidName, "Invalid SyncopeConf key")).
+ addNode("name").addConstraintViolation();
+ }
+
+ return isValid;
+ }
+}
Propchange: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfValidator.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfValidator.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeConfValidator.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeRoleValidator.java Fri Sep 20 13:10:25 2013
@@ -18,17 +18,11 @@
*/
package org.apache.syncope.core.persistence.validation.entity;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.core.persistence.beans.role.SyncopeRole;
-public class SyncopeRoleValidator extends AbstractValidator implements
- ConstraintValidator<SyncopeRoleCheck, SyncopeRole> {
-
- @Override
- public void initialize(final SyncopeRoleCheck constraintAnnotation) {
- }
+public class SyncopeRoleValidator extends AbstractValidator<SyncopeRoleCheck, SyncopeRole> {
@Override
public boolean isValid(final SyncopeRole object, final ConstraintValidatorContext context) {
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserValidator.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserValidator.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserValidator.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/persistence/validation/entity/SyncopeUserValidator.java Fri Sep 20 13:10:25 2013
@@ -20,7 +20,6 @@ package org.apache.syncope.core.persiste
import java.util.ArrayList;
import java.util.List;
-import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import org.apache.syncope.common.types.AccountPolicySpec;
import org.apache.syncope.common.types.EntityViolationType;
@@ -37,8 +36,7 @@ import org.apache.syncope.core.policy.Pa
import org.apache.syncope.core.policy.PolicyEvaluator;
import org.springframework.beans.factory.annotation.Autowired;
-public class SyncopeUserValidator extends AbstractValidator implements
- ConstraintValidator<SyncopeUserCheck, SyncopeUser> {
+public class SyncopeUserValidator extends AbstractValidator<SyncopeUserCheck, SyncopeUser> {
@Autowired
private PolicyDAO policyDAO;
@@ -53,10 +51,6 @@ public class SyncopeUserValidator extend
private AccountPolicyEnforcer apEnforcer;
@Override
- public void initialize(final SyncopeUserCheck constraintAnnotation) {
- }
-
- @Override
public boolean isValid(final SyncopeUser object, final ConstraintValidatorContext context) {
context.disableDefaultConstraintViolation();
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/DerivedSchemaController.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/DerivedSchemaController.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/DerivedSchemaController.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/controller/DerivedSchemaController.java Fri Sep 20 13:10:25 2013
@@ -63,7 +63,6 @@ public class DerivedSchemaController ext
public DerivedSchemaTO create(final HttpServletResponse response,
@RequestBody final DerivedSchemaTO derSchemaTO, @PathVariable("kind") final String kind) {
-
if (StringUtils.isBlank(derSchemaTO.getName())) {
SyncopeClientCompositeErrorException sccee =
new SyncopeClientCompositeErrorException(HttpStatus.BAD_REQUEST);
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/DerivedSchemaDataBinder.java Fri Sep 20 13:10:25 2013
@@ -18,6 +18,7 @@
*/
package org.apache.syncope.core.rest.data;
+import org.apache.commons.lang3.StringUtils;
import org.apache.syncope.common.to.DerivedSchemaTO;
import org.apache.syncope.common.types.SyncopeClientExceptionType;
import org.apache.syncope.common.validation.SyncopeClientCompositeErrorException;
@@ -38,15 +39,13 @@ public class DerivedSchemaDataBinder {
private AbstractDerSchema populate(final AbstractDerSchema derSchema, final DerivedSchemaTO derSchemaTO) {
SyncopeClientCompositeErrorException scce = new SyncopeClientCompositeErrorException(HttpStatus.BAD_REQUEST);
- if (derSchemaTO.getExpression() == null) {
- SyncopeClientException requiredValuesMissing = new SyncopeClientException(
- SyncopeClientExceptionType.RequiredValuesMissing);
+ if (StringUtils.isBlank(derSchemaTO.getExpression())) {
+ SyncopeClientException requiredValuesMissing =
+ new SyncopeClientException(SyncopeClientExceptionType.RequiredValuesMissing);
requiredValuesMissing.addElement("expression");
scce.addException(requiredValuesMissing);
- }
-
- if (!jexlUtil.isExpressionValid(derSchemaTO.getExpression())) {
+ } else if (!jexlUtil.isExpressionValid(derSchemaTO.getExpression())) {
SyncopeClientException invalidMandatoryCondition = new SyncopeClientException(
SyncopeClientExceptionType.InvalidValues);
invalidMandatoryCondition.addElement(derSchemaTO.getExpression());
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/utils/RestServiceExceptionMapper.java Fri Sep 20 13:10:25 2013
@@ -174,7 +174,7 @@ public class RestServiceExceptionMapper
responseBuilder.header(SyncopeClientErrorHandler.EXCEPTION_TYPE_HEADER, exType.getHeaderValue());
- for (@SuppressWarnings("rawtypes") Map.Entry<Class, Set<EntityViolationType>> violation
+ for (Map.Entry<Class<?>, Set<EntityViolationType>> violation
: ((InvalidEntityException) ex).getViolations().entrySet()) {
for (EntityViolationType violationType : violation.getValue()) {
Modified: syncope/branches/1_1_X/core/src/main/webapp/syncopeClientError.jsp
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/webapp/syncopeClientError.jsp?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/webapp/syncopeClientError.jsp (original)
+++ syncope/branches/1_1_X/core/src/main/webapp/syncopeClientError.jsp Fri Sep 20 13:10:25 2013
@@ -39,7 +39,7 @@ under the License.
<%@page import="org.springframework.dao.DataIntegrityViolationException"%>
<%@page import="org.springframework.orm.jpa.JpaSystemException"%>
-<%! static final Logger LOG = LoggerFactory.getLogger(AbstractController.class);%>
+<%! static final Logger LOG = LoggerFactory.getLogger(AbstractController.class);%>
<%
Throwable ex = pageContext.getErrorData().getThrowable();
@@ -54,7 +54,7 @@ under the License.
response.setHeader(SyncopeClientErrorHandler.EXCEPTION_TYPE_HEADER, exType.getHeaderValue());
- for (Map.Entry<Class, Set<EntityViolationType>> violation : ((InvalidEntityException) ex).getViolations().
+ for (Map.Entry<Class<?>, Set<EntityViolationType>> violation : ((InvalidEntityException) ex).getViolations().
entrySet()) {
for (EntityViolationType violationType : violation.getValue()) {
Modified: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/AttrTest.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/AttrTest.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/AttrTest.java (original)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/AttrTest.java Fri Sep 20 13:10:25 2013
@@ -76,7 +76,6 @@ public class AttrTest extends AbstractDA
@Test
public void save() throws ClassNotFoundException {
-
SyncopeUser user = userDAO.find(1L);
USchema emailSchema = userSchemaDAO.find("email", USchema.class);
@@ -118,7 +117,6 @@ public class AttrTest extends AbstractDA
@Test
public void checkForEnumType() throws ClassNotFoundException {
-
SyncopeUser user = userDAO.find(1L);
USchema gender = userSchemaDAO.find("gender", USchema.class);
Added: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ConfTest.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ConfTest.java?rev=1524988&view=auto
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ConfTest.java (added)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ConfTest.java Fri Sep 20 13:10:25 2013
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.core.persistence.dao;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import org.apache.syncope.common.types.EntityViolationType;
+import org.apache.syncope.core.persistence.beans.SyncopeConf;
+import org.apache.syncope.core.persistence.validation.entity.InvalidEntityException;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+
+@Transactional
+public class ConfTest extends AbstractDAOTest {
+
+ @Autowired
+ private ConfDAO confDAO;
+
+ @Test
+ public void issueSYNCOPE418() {
+ SyncopeConf conf = new SyncopeConf();
+ conf.setKey("http://schemas.examples.org/security/authorization/organizationUnit");
+
+ try {
+ confDAO.save(conf);
+ fail();
+ } catch (InvalidEntityException e) {
+ assertTrue(e.hasViolation(EntityViolationType.InvalidName));
+ }
+ }
+}
Propchange: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ConfTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ConfTest.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL
Propchange: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ConfTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java (original)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/DerSchemaTest.java Fri Sep 20 13:10:25 2013
@@ -21,11 +21,15 @@ package org.apache.syncope.core.persiste
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.List;
import org.apache.syncope.common.types.AttributableType;
+import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.core.persistence.beans.user.UDerSchema;
+import org.apache.syncope.core.persistence.validation.entity.InvalidEntityException;
import org.apache.syncope.core.util.AttributableUtil;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -71,4 +75,17 @@ public class DerSchemaTest extends Abstr
UDerSchema actual = derSchemaDAO.find("cn", UDerSchema.class);
assertNull("delete did not work", actual);
}
+
+ @Test
+ public void issueSYNCOPE418() {
+ UDerSchema schema = new UDerSchema();
+ schema.setName("http://schemas.examples.org/security/authorization/organizationUnit");
+
+ try {
+ derSchemaDAO.save(schema);
+ fail();
+ } catch (InvalidEntityException e) {
+ assertTrue(e.hasViolation(EntityViolationType.InvalidName));
+ }
+ }
}
Modified: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/NotificationTest.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/NotificationTest.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/NotificationTest.java (original)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/NotificationTest.java Fri Sep 20 13:10:25 2013
@@ -119,7 +119,7 @@ public class NotificationTest extends Ab
notification.setSubject("Test notification");
notification.setTemplate("test");
- Map<Class, Set<EntityViolationType>> violations;
+ Map<Class<?>, Set<EntityViolationType>> violations;
try {
notificationDAO.save(notification);
violations = null;
Modified: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java (original)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/ResourceTest.java Fri Sep 20 13:10:25 2013
@@ -23,11 +23,13 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.List;
import org.apache.syncope.common.types.AttributableType;
+import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.common.types.IntMappingType;
import org.apache.syncope.common.types.MappingPurpose;
import org.apache.syncope.core.persistence.beans.AbstractMappingItem;
@@ -248,4 +250,17 @@ public class ResourceTest extends Abstra
ExternalResource actual = resourceDAO.find("ws-target-resource-2");
assertNull(actual);
}
+
+ @Test
+ public void issueSYNCOPE418() {
+ ExternalResource resource = new ExternalResource();
+ resource.setName("http://schemas.examples.org/security/authorization/organizationUnit");
+
+ try {
+ resourceDAO.save(resource);
+ fail();
+ } catch (InvalidEntityException e) {
+ assertTrue(e.hasViolation(EntityViolationType.InvalidName));
+ }
+ }
}
Modified: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/SchemaTest.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/SchemaTest.java?rev=1524988&r1=1524987&r2=1524988&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/SchemaTest.java (original)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/persistence/dao/SchemaTest.java Fri Sep 20 13:10:25 2013
@@ -22,11 +22,14 @@ import static org.junit.Assert.assertEqu
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
import java.util.List;
import org.apache.syncope.common.types.AttributableType;
import org.apache.syncope.common.types.AttributeSchemaType;
+import org.apache.syncope.common.types.EntityViolationType;
import org.apache.syncope.core.persistence.beans.AbstractSchema;
import org.apache.syncope.core.persistence.beans.role.RAttr;
import org.apache.syncope.core.persistence.beans.role.RSchema;
@@ -142,4 +145,17 @@ public class SchemaTest extends Abstract
USchema actual = schemaDAO.find("fullname", USchema.class);
assertNull("delete did not work", actual);
}
+
+ @Test
+ public void issueSYNCOPE418() {
+ USchema schema = new USchema();
+ schema.setName("http://schemas.examples.org/security/authorization/organizationUnit");
+
+ try {
+ schemaDAO.save(schema);
+ fail();
+ } catch (InvalidEntityException e) {
+ assertTrue(e.hasViolation(EntityViolationType.InvalidName));
+ }
+ }
}