From c86c62cd2d38cf99d21dc97293afb3d3587ecf01 Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Mon, 16 Jan 2012 13:27:37 +0000 Subject: [PATCH] when possible rest error must return the field with issue to map it in the ui git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1231992 13f79535-47bb-0310-9956-ffa450edef68 --- .../admin/model/RepositoryAdminException.java | 30 +++++++++++++++++++ .../repository/RepositoryCommonValidator.java | 5 ++-- .../services/ArchivaRestServiceException.java | 30 +++++++++++++++++++ .../rest/services/ArchivaRestError.java | 19 ++++++++++++ .../DefaultManagedRepositoriesService.java | 6 ++-- 5 files changed, 85 insertions(+), 5 deletions(-) diff --git a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/RepositoryAdminException.java b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/RepositoryAdminException.java index 207e41af4..80f777015 100644 --- a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/RepositoryAdminException.java +++ b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-api/src/main/java/org/apache/archiva/admin/model/RepositoryAdminException.java @@ -26,13 +26,43 @@ package org.apache.archiva.admin.model; public class RepositoryAdminException extends Exception { + + /** + * can return the field name of bean with issue + * can be null + * @since 1.4-M3 + */ + private String fieldName; + public RepositoryAdminException( String s ) { super( s ); } + public RepositoryAdminException( String s, String fieldName ) + { + this( s ); + this.fieldName = fieldName; + } + public RepositoryAdminException( String message, Throwable cause ) { super( message, cause ); } + + public RepositoryAdminException( String message, Throwable cause, String fieldName ) + { + super( message, cause ); + this.fieldName = fieldName; + } + + public String getFieldName() + { + return fieldName; + } + + public void setFieldName( String fieldName ) + { + this.fieldName = fieldName; + } } diff --git a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/RepositoryCommonValidator.java b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/RepositoryCommonValidator.java index 2ffc2bfd5..05756fd48 100644 --- a/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/RepositoryCommonValidator.java +++ b/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/RepositoryCommonValidator.java @@ -132,7 +132,7 @@ public class RepositoryCommonValidator if ( !validator.validate( cronExpression ) ) { - throw new RepositoryAdminException( "Invalid cron expression." ); + throw new RepositoryAdminException( "Invalid cron expression.", "cronExpression" ); } } else @@ -147,7 +147,8 @@ public class RepositoryCommonValidator { throw new RepositoryAdminException( "Invalid repository location. Directory must only contain alphanumeric characters, equals(=), question-marks(?), " - + "exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-)." ); + + "exclamation-points(!), ampersands(&), forward-slashes(/), back-slashes(\\), underscores(_), dots(.), colons(:), tildes(~), and dashes(-).", + "location" ); } } diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRestServiceException.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRestServiceException.java index 6e4997ca5..895ac14a0 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRestServiceException.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/ArchivaRestServiceException.java @@ -30,18 +30,38 @@ public class ArchivaRestServiceException private String errorKey; + /** + * can return the field name of bean with issue + * can be null + * + * @since 1.4-M3 + */ + private String fieldName; + public ArchivaRestServiceException( String message ) { super( message ); } + public ArchivaRestServiceException( String message, String fieldName ) + { + this( message ); + this.fieldName = fieldName; + } + public ArchivaRestServiceException( String s, int httpErrorCode ) { super( s ); this.httpErrorCode = httpErrorCode; } + public ArchivaRestServiceException( String s, int httpErrorCode, String fieldName ) + { + this( s, httpErrorCode ); + this.fieldName = fieldName; + } + public int getHttpErrorCode() { return httpErrorCode; @@ -61,4 +81,14 @@ public class ArchivaRestServiceException { this.errorKey = errorKey; } + + public String getFieldName() + { + return fieldName; + } + + public void setFieldName( String fieldName ) + { + this.fieldName = fieldName; + } } diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java index 173077373..bdfd314ac 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/ArchivaRestError.java @@ -34,6 +34,14 @@ public class ArchivaRestError private String errorMessage; + /** + * can return the field name of bean with issue + * can be null + * + * @since 1.4-M3 + */ + private String fieldName; + public ArchivaRestError() { // no op @@ -43,6 +51,7 @@ public class ArchivaRestError { errorKey = e.getErrorKey(); errorMessage = e.getMessage(); + fieldName = e.getFieldName(); } public String getErrorKey() @@ -64,4 +73,14 @@ public class ArchivaRestError { this.errorMessage = errorMessage; } + + public String getFieldName() + { + return fieldName; + } + + public void setFieldName( String fieldName ) + { + this.fieldName = fieldName; + } } diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultManagedRepositoriesService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultManagedRepositoriesService.java index 7de4cc5c6..9903a8e3b 100644 --- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultManagedRepositoriesService.java +++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultManagedRepositoriesService.java @@ -89,7 +89,7 @@ public class DefaultManagedRepositoriesService catch ( RepositoryAdminException e ) { log.error( e.getMessage(), e ); - throw new ArchivaRestServiceException( e.getMessage() ); + throw new ArchivaRestServiceException( e.getMessage(), e.getFieldName() ); } } @@ -105,7 +105,7 @@ public class DefaultManagedRepositoriesService } catch ( RepositoryAdminException e ) { - throw new ArchivaRestServiceException( e.getMessage() ); + throw new ArchivaRestServiceException( e.getMessage(), e.getFieldName() ); } } @@ -123,7 +123,7 @@ public class DefaultManagedRepositoriesService } catch ( RepositoryAdminException e ) { - throw new ArchivaRestServiceException( e.getMessage() ); + throw new ArchivaRestServiceException( e.getMessage(), e.getFieldName() ); } } -- 2.39.5