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 2016/01/22 17:44:44 UTC
[5/5] syncope git commit: [SYNCOPE-759] Fix
[SYNCOPE-759] Fix
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/95709c9b
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/95709c9b
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/95709c9b
Branch: refs/heads/master
Commit: 95709c9bd23e28e0564f93d663de313c4c35caf1
Parents: 02abafa
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Jan 22 17:44:25 2016 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Jan 22 17:44:25 2016 +0100
----------------------------------------------------------------------
.../syncope/core/logic/AnyTypeClassLogic.java | 11 +++++++++++
.../org/apache/syncope/core/logic/AnyTypeLogic.java | 10 ++++++++++
.../persistence/api/dao/DuplicateException.java | 2 +-
.../fit/core/reference/AnyTypeClassITCase.java | 16 ++++++++++++++++
.../fit/core/reference/ExceptionMapperITCase.java | 2 +-
5 files changed, 39 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/95709c9b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
index daaaf56..180035f 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeClassLogic.java
@@ -25,10 +25,13 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Transformer;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
+import org.apache.syncope.common.lib.SyncopeClientException;
import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.lib.types.ClientExceptionType;
import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
import org.apache.syncope.core.persistence.api.dao.AnyTypeClassDAO;
+import org.apache.syncope.core.persistence.api.dao.DuplicateException;
import org.apache.syncope.core.persistence.api.entity.AnyTypeClass;
import org.apache.syncope.core.provisioning.api.data.AnyTypeClassDataBinder;
import org.springframework.beans.factory.annotation.Autowired;
@@ -69,6 +72,14 @@ public class AnyTypeClassLogic extends AbstractTransactionalLogic<AnyTypeClassTO
@PreAuthorize("hasRole('" + StandardEntitlement.ANYTYPECLASS_CREATE + "')")
public AnyTypeClassTO create(final AnyTypeClassTO anyTypeClassTO) {
+ if (StringUtils.isBlank(anyTypeClassTO.getKey())) {
+ SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.RequiredValuesMissing);
+ sce.getElements().add(AnyTypeClass.class.getSimpleName() + " name");
+ throw sce;
+ }
+ if (anyTypeClassDAO.find(anyTypeClassTO.getKey()) != null) {
+ throw new DuplicateException(anyTypeClassTO.getKey());
+ }
return binder.getAnyTypeClassTO(anyTypeClassDAO.save(binder.create(anyTypeClassTO)));
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/95709c9b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
----------------------------------------------------------------------
diff --git a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
index 3116ae8..697fb07 100644
--- a/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
+++ b/core/logic/src/main/java/org/apache/syncope/core/logic/AnyTypeLogic.java
@@ -32,6 +32,7 @@ import org.apache.syncope.common.lib.types.StandardEntitlement;
import org.apache.syncope.core.misc.EntitlementsHolder;
import org.apache.syncope.core.persistence.api.dao.NotFoundException;
import org.apache.syncope.core.persistence.api.dao.AnyTypeDAO;
+import org.apache.syncope.core.persistence.api.dao.DuplicateException;
import org.apache.syncope.core.persistence.api.entity.AnyType;
import org.apache.syncope.core.provisioning.api.data.AnyTypeDataBinder;
import org.springframework.beans.factory.annotation.Autowired;
@@ -72,6 +73,15 @@ public class AnyTypeLogic extends AbstractTransactionalLogic<AnyTypeTO> {
@PreAuthorize("hasRole('" + StandardEntitlement.ANYTYPE_CREATE + "')")
public AnyTypeTO create(final AnyTypeTO anyTypeTO) {
+ if (StringUtils.isBlank(anyTypeTO.getKey())) {
+ SyncopeClientException sce = SyncopeClientException.build(ClientExceptionType.RequiredValuesMissing);
+ sce.getElements().add(AnyType.class.getSimpleName() + " name");
+ throw sce;
+ }
+ if (anyTypeDAO.find(anyTypeTO.getKey()) != null) {
+ throw new DuplicateException(anyTypeTO.getKey());
+ }
+
AnyTypeTO result = binder.getAnyTypeTO(anyTypeDAO.save(binder.create(anyTypeTO)));
EntitlementsHolder.getInstance().addFor(result.getKey());
return result;
http://git-wip-us.apache.org/repos/asf/syncope/blob/95709c9b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DuplicateException.java
----------------------------------------------------------------------
diff --git a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DuplicateException.java b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DuplicateException.java
index 5cd1da0..40c09f1 100644
--- a/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DuplicateException.java
+++ b/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/DuplicateException.java
@@ -19,7 +19,7 @@
package org.apache.syncope.core.persistence.api.dao;
/**
- * Thrown when something is not found.
+ * Thrown when someone is attempting to create an entity with the same key of another existing entity.
*/
public class DuplicateException extends RuntimeException {
http://git-wip-us.apache.org/repos/asf/syncope/blob/95709c9b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeClassITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeClassITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeClassITCase.java
index 6e88c71..7bc9349 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeClassITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/AnyTypeClassITCase.java
@@ -134,4 +134,20 @@ public class AnyTypeClassITCase extends AbstractITCase {
assertNotNull(newClass);
assertFalse(newClass.getPlainSchemas().contains(newSchema.getKey()));
}
+
+ @Test
+ public void issueSYNCOPE759() {
+ AnyTypeClassTO minimalGroup = anyTypeClassService.read("minimal group");
+ assertNotNull(minimalGroup);
+
+ AnyTypeClassTO newAnyTypeClass = new AnyTypeClassTO();
+ newAnyTypeClass.setKey(minimalGroup.getKey());
+
+ try {
+ anyTypeClassService.create(newAnyTypeClass);
+ fail();
+ } catch (SyncopeClientException e) {
+ assertEquals(ClientExceptionType.EntityExists, e.getType());
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/syncope/blob/95709c9b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ExceptionMapperITCase.java
----------------------------------------------------------------------
diff --git a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ExceptionMapperITCase.java b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ExceptionMapperITCase.java
index da0295c..2679196 100644
--- a/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ExceptionMapperITCase.java
+++ b/fit/core-reference/src/test/java/org/apache/syncope/fit/core/reference/ExceptionMapperITCase.java
@@ -67,7 +67,7 @@ public class ExceptionMapperITCase extends AbstractITCase {
createSchema(SchemaType.PLAIN, schemaTO);
AnyTypeClassTO typeClass = new AnyTypeClassTO();
- typeClass.setKey("camelAttribute");
+ typeClass.setKey("camelAttribute" + getUUIDString());
typeClass.getPlainSchemas().add(schemaTO.getKey());
anyTypeClassService.create(typeClass);