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/12/30 12:13:03 UTC
svn commit: r1554186 - in /syncope/branches/1_1_X:
common/src/main/java/org/apache/syncope/common/types/
core/src/main/java/org/apache/syncope/core/rest/data/
core/src/main/java/org/apache/syncope/core/rest/utils/
core/src/main/webapp/ core/src/test/ja...
Author: ilgrosso
Date: Mon Dec 30 11:13:03 2013
New Revision: 1554186
URL: http://svn.apache.org/r1554186
Log:
[SYNCOPE-466] Replacing IllegalArgumentException thrown on server side with more appropriate exception
Modified:
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/rest/data/PolicyDataBinder.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/rest/PolicyTestITCase.java
syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
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=1554186&r1=1554185&r2=1554186&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 Mon Dec 30 11:13:03 2013
@@ -31,17 +31,15 @@ public enum SyncopeClientExceptionType {
InvalidLogger("Syncope.InvalidLogger", "Syncope.InvalidLogger.message"),
InvalidConnInstance("Syncope.InvalidConnInstance", "Syncope.InvalidConnInstance.message"),
InvalidConnIdConf("Syncope.InvalidConnIdConf", "Syncope.InvalidConnIdConf.message"),
- InvalidPasswordPolicy("Syncope.InvalidPasswordPolicy", "Syncope.InvalidPasswordPolicy.reason"),
- InvalidAccountPolicy("Syncope.InvalidAccountPolicy", "Syncope.InvalidAccountPolicy.reason"),
- InvalidSyncPolicy("Syncope.InvalidSyncPolicy", "Syncope.InvalidSyncPolicy.reason"),
+ InvalidPolicy("Syncope.InvalidPolicy", "Syncope.InvalidPolicy.reason"),
InvalidSyncopeRole("Syncope.InvalidSyncopeRole", "Syncope.InvalidSyncopeRole.reason"),
InvalidReportExec("Syncope.InvalidReportExec", "Syncope.InvalidReportExec.reason"),
InvalidRoles("Syncope.InvalidRoles", "Syncope.InvalidRoles.name"),
InvalidSchemaDefinition("Syncope.InvalidSchemaDefinition", ""),
InvalidSearchCondition("Syncope.InvalidSearchCondition", ""),
InvalidPropagationTaskExecReport(
- "Syncope.InvalidPropagationTaskExecReport",
- "Syncope.InvalidPropagationTaskExecReport.element"),
+ "Syncope.InvalidPropagationTaskExecReport",
+ "Syncope.InvalidPropagationTaskExecReport.element"),
InvalidUSchema("Syncope.InvalidUSchema", "Syncope.InvalidUSchema.name"),
InvalidUDerSchema("Syncope.InvalidUDerSchema", "Syncope.InvalidUDerSchema.name"),
InvalidUVirSchema("Syncope.InvalidUVirSchema", "Syncope.InvalidUVirSchema.name"),
Modified: syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/PolicyDataBinder.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/PolicyDataBinder.java?rev=1554186&r1=1554185&r2=1554186&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/PolicyDataBinder.java (original)
+++ syncope/branches/1_1_X/core/src/main/java/org/apache/syncope/core/rest/data/PolicyDataBinder.java Mon Dec 30 11:13:03 2013
@@ -26,10 +26,14 @@ import org.apache.syncope.common.types.A
import org.apache.syncope.common.types.PasswordPolicySpec;
import org.apache.syncope.common.types.PolicyType;
import org.apache.syncope.common.types.SyncPolicySpec;
+import org.apache.syncope.common.types.SyncopeClientExceptionType;
+import org.apache.syncope.common.validation.SyncopeClientCompositeErrorException;
+import org.apache.syncope.common.validation.SyncopeClientException;
import org.apache.syncope.core.persistence.beans.AccountPolicy;
import org.apache.syncope.core.persistence.beans.PasswordPolicy;
import org.apache.syncope.core.persistence.beans.Policy;
import org.apache.syncope.core.persistence.beans.SyncPolicy;
+import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
@Component
@@ -105,8 +109,12 @@ public class PolicyDataBinder {
@SuppressWarnings("unchecked")
public <T extends Policy> T getPolicy(T policy, final PolicyTO policyTO) {
if (policy != null && policy.getType() != policyTO.getType()) {
- throw new IllegalArgumentException(
- String.format("Cannot update %s from %s", policy.getType(), policyTO.getType()));
+ SyncopeClientException sce = new SyncopeClientException(SyncopeClientExceptionType.InvalidPolicy);
+ sce.addElement(String.format("Cannot update %s from %s", policy.getType(), policyTO.getType()));
+ SyncopeClientCompositeErrorException scce =
+ new SyncopeClientCompositeErrorException(HttpStatus.BAD_REQUEST);
+ scce.addException(sce);
+ throw scce;
}
final boolean isGlobal = isGlobalPolicy(policyTO.getType());
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=1554186&r1=1554185&r2=1554186&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 Mon Dec 30 11:13:03 2013
@@ -167,10 +167,12 @@ public class RestServiceExceptionMapper
} else {
return ((BadRequestException) ex).getResponse();
}
-
} else if (ex instanceof InvalidEntityException) {
- SyncopeClientExceptionType exType = SyncopeClientExceptionType.valueOf("Invalid"
- + ((InvalidEntityException) ex).getEntityClassSimpleName());
+ SyncopeClientExceptionType exType =
+ ((InvalidEntityException) ex).getEntityClassSimpleName().endsWith("Policy")
+ ? SyncopeClientExceptionType.InvalidPolicy
+ : SyncopeClientExceptionType.valueOf(
+ "Invalid" + ((InvalidEntityException) ex).getEntityClassSimpleName());
responseBuilder.header(SyncopeClientErrorHandler.EXCEPTION_TYPE_HEADER, exType.getHeaderValue());
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=1554186&r1=1554185&r2=1554186&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 Mon Dec 30 11:13:03 2013
@@ -49,8 +49,11 @@ under the License.
int statusCode = HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
if (ex instanceof InvalidEntityException) {
- SyncopeClientExceptionType exType = SyncopeClientExceptionType.valueOf(
- "Invalid" + ((InvalidEntityException) ex).getEntityClassSimpleName());
+ SyncopeClientExceptionType exType =
+ ((InvalidEntityException) ex).getEntityClassSimpleName().endsWith("Policy")
+ ? SyncopeClientExceptionType.InvalidPolicy
+ : SyncopeClientExceptionType.valueOf(
+ "Invalid" + ((InvalidEntityException) ex).getEntityClassSimpleName());
response.setHeader(SyncopeClientErrorHandler.EXCEPTION_TYPE_HEADER, exType.getHeaderValue());
Modified: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java?rev=1554186&r1=1554185&r2=1554186&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java (original)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/PolicyTestITCase.java Mon Dec 30 11:13:03 2013
@@ -82,7 +82,7 @@ public class PolicyTestITCase extends Ab
createPolicy(PolicyType.PASSWORD, policy);
fail();
} catch (SyncopeClientCompositeErrorException sccee) {
- assertNotNull(sccee.getException(SyncopeClientExceptionType.InvalidPasswordPolicy));
+ assertNotNull(sccee.getException(SyncopeClientExceptionType.InvalidPolicy));
}
}
@@ -95,7 +95,7 @@ public class PolicyTestITCase extends Ab
createPolicy(PolicyType.SYNC, policy);
fail();
} catch (SyncopeClientCompositeErrorException sccee) {
- assertNotNull(sccee.getException(SyncopeClientExceptionType.InvalidSyncPolicy));
+ assertNotNull(sccee.getException(SyncopeClientExceptionType.InvalidPolicy));
}
}
@@ -165,6 +165,20 @@ public class PolicyTestITCase extends Ab
assertEquals(1, policyService.getSyncCorrelationRuleClasses(PolicyType.SYNC).size());
}
+ @Test
+ public void issueSYNCOPE466() {
+ PasswordPolicyTO policy = policyService.read(PolicyType.PASSWORD, 4L);
+ assertEquals(PolicyType.PASSWORD, policy.getType());
+
+ policy.setType(PolicyType.GLOBAL_PASSWORD);
+ try {
+ policyService.update(PolicyType.PASSWORD, policy.getId(), policy);
+ fail();
+ } catch (SyncopeClientCompositeErrorException e) {
+ assertNotNull(e.getException(SyncopeClientExceptionType.InvalidPolicy));
+ }
+ }
+
private SyncPolicyTO buildSyncPolicyTO() {
SyncPolicyTO policy = new SyncPolicyTO();
Modified: syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java
URL: http://svn.apache.org/viewvc/syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java?rev=1554186&r1=1554185&r2=1554186&view=diff
==============================================================================
--- syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java (original)
+++ syncope/branches/1_1_X/core/src/test/java/org/apache/syncope/core/rest/ResourceTestITCase.java Mon Dec 30 11:13:03 2013
@@ -128,7 +128,6 @@ public class ResourceTestITCase extends
assertNotNull(actual);
// check the existence
-
actual = resourceService.read(resourceName);
assertNotNull(actual);
}
@@ -257,7 +256,6 @@ public class ResourceTestITCase extends
assertNotNull(actual);
// check the existence
-
actual = resourceService.read(resourceName);
assertNotNull(actual);
assertNotNull(actual.getPasswordPolicy());
@@ -367,7 +365,7 @@ public class ResourceTestITCase extends
@Test
public void list() {
- List<ResourceTO> actuals = resourceService.list(null);
+ List<ResourceTO> actuals = resourceService.list();
assertNotNull(actuals);
assertFalse(actuals.isEmpty());
for (ResourceTO resourceTO : actuals) {
@@ -379,9 +377,10 @@ public class ResourceTestITCase extends
public void listByType() {
List<ResourceTO> actuals = resourceService.list(105L);
- assertNotNull(actuals);
- assertEquals(1, actuals.size());
- assertNotNull(actuals.get(0));
+ for (ResourceTO resourceTO : actuals) {
+ assertNotNull(resourceTO);
+ assertEquals(105L, resourceTO.getConnectorId().longValue());
+ }
}
@Test