From 7f13c6f085a5389a855a17cf2032bcb7d2dd7ac1 Mon Sep 17 00:00:00 2001 From: Dancovich Date: Fri, 23 Aug 2013 15:35:38 -0300 Subject: [PATCH] Implementadas exceções específicas para o módulo de monitoração. --- impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/management/Management.java | 41 ++++++++++++++++++++++++----------------- impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedAttributeNotFoundException.java | 29 +++++++++++++++++++++++++++++ impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedInvokationException.java | 23 +++++++++++++++++++++++ 3 files changed, 76 insertions(+), 17 deletions(-) create mode 100644 impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedAttributeNotFoundException.java create mode 100644 impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedInvokationException.java diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/management/Management.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/management/Management.java index de1b81a..d35f102 100644 --- a/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/management/Management.java +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/management/Management.java @@ -46,15 +46,14 @@ import java.util.Set; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; -import javax.management.ReflectionException; import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; import javax.validation.Validation; import javax.validation.ValidationException; import javax.validation.Validator; import org.slf4j.Logger; -import br.gov.frameworkdemoiselle.DemoiselleException; import br.gov.frameworkdemoiselle.annotation.ManagedProperty; import br.gov.frameworkdemoiselle.annotation.Name; import br.gov.frameworkdemoiselle.internal.context.ContextManager; @@ -62,6 +61,8 @@ import br.gov.frameworkdemoiselle.internal.context.ManagedContext; import br.gov.frameworkdemoiselle.internal.management.ManagedType.MethodDetail; import br.gov.frameworkdemoiselle.lifecycle.ManagementExtension; import br.gov.frameworkdemoiselle.management.AttributeChangeNotification; +import br.gov.frameworkdemoiselle.management.ManagedAttributeNotFoundException; +import br.gov.frameworkdemoiselle.management.ManagedInvokationException; import br.gov.frameworkdemoiselle.management.NotificationManager; import br.gov.frameworkdemoiselle.stereotype.ManagementController; import br.gov.frameworkdemoiselle.util.Beans; @@ -124,7 +125,7 @@ public class Management implements Serializable { * parameters. * @return The return value of the original invoked operation. Methods of return type void will return * the {@link Void} type. - * @throws ReflectionException + * @throws ManagedInvokationException * In case the operation doesn't exist or have a different signature */ public Object invoke(ManagedType managedType, String actionName, Object[] params) { @@ -141,16 +142,16 @@ public class Management implements Serializable { .getType().getCanonicalName())); return method.getMethod().invoke(delegate, params); } catch (Exception e) { - throw new DemoiselleException(bundle.getString("management-invoke-error", actionName), e); + throw new ManagedInvokationException(bundle.getString("management-invoke-error", actionName), e); } } else { - throw new DemoiselleException(bundle.getString("management-invoke-error", actionName)); + throw new ManagedInvokationException(bundle.getString("management-invoke-error", actionName)); } } finally { deactivateContexts(managedType.getType()); } } else { - throw new DemoiselleException(bundle.getString("management-type-not-found")); + throw new ManagedInvokationException(bundle.getString("management-type-not-found")); } } @@ -169,6 +170,8 @@ public class Management implements Serializable { * @param propertyName * The name of the property * @return The current value of the property + * @throws ManagedAttributeNotFoundException If the given property doesn't exist or there was a problem trying to read the property value. + * @throws ManagedInvokationException If there was an error trying to invoke the getter method to read the propery value. */ public Object getProperty(ManagedType managedType, String propertyName) { @@ -186,16 +189,16 @@ public class Management implements Serializable { return getterMethod.invoke(delegate, (Object[]) null); } catch (Exception e) { - throw new DemoiselleException(bundle.getString("management-invoke-error", getterMethod.getName()), + throw new ManagedInvokationException(bundle.getString("management-invoke-error", getterMethod.getName()), e); } finally { deactivateContexts(managedType.getType()); } } else { - throw new DemoiselleException(bundle.getString("management-read-value-error", propertyName)); + throw new ManagedAttributeNotFoundException(bundle.getString("management-read-value-error", propertyName)); } } else { - throw new DemoiselleException(bundle.getString("management-type-not-found")); + throw new ManagedInvokationException(bundle.getString("management-type-not-found")); } } @@ -215,7 +218,11 @@ public class Management implements Serializable { * The name of the property * @param newValue * The new value of the property + * @throws ManagedInvokationException If there was an error trying to call the setter method for this property. + * @throws ManagedAttributeNotFoundException If the giver property doesn't exist or could'n be written to. + * @throws ConstraintViolationException If the property defined one or more validation constraints and setting this value violates some of those constraints. */ + @SuppressWarnings("unchecked") public void setProperty(ManagedType managedType, String propertyName, Object newValue) { if (managedTypes.contains(managedType)) { @@ -249,9 +256,9 @@ public class Management implements Serializable { errorBuffer.insert(errorBuffer.length(), "\r\n"); } - throw new DemoiselleException(bundle.getString( - "management-validation-constraint-violation", managedType.getType() - .getCanonicalName(), propertyName, errorBuffer.toString())); + throw new ConstraintViolationException(bundle.getString("management-validation-constraint-violation" + , managedType.getType().getCanonicalName(), propertyName, errorBuffer.toString()) + , (Set>) violations); } } else { logger.warn(bundle.getString("management-validation-validator-not-found")); @@ -276,19 +283,19 @@ public class Management implements Serializable { .getCanonicalName()), propertyName, attributeType, oldValue, newValue); notificationManager.sendNotification(notification); - } catch (DemoiselleException de) { - throw de; + } catch (ConstraintViolationException ce) { + throw ce; } catch (Exception e) { - throw new DemoiselleException(bundle.getString("management-invoke-error", method.getName()), e); + throw new ManagedInvokationException(bundle.getString("management-invoke-error", method.getName()), e); } finally { deactivateContexts(managedType.getType()); } } else { - throw new DemoiselleException(bundle.getString("management-write-value-error", propertyName)); + throw new ManagedAttributeNotFoundException(bundle.getString("management-write-value-error", propertyName)); } } else { - throw new DemoiselleException(bundle.getString("management-type-not-found")); + throw new ManagedInvokationException(bundle.getString("management-type-not-found")); } } diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedAttributeNotFoundException.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedAttributeNotFoundException.java new file mode 100644 index 0000000..9a03f5e --- /dev/null +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedAttributeNotFoundException.java @@ -0,0 +1,29 @@ +package br.gov.frameworkdemoiselle.management; + +import br.gov.frameworkdemoiselle.DemoiselleException; + +/** + * + * Thrown when a management client tries to read or write a property, but the + * management engine has no knowledge of an attribute with the given name. + * + * @author serpro + * + */ +public class ManagedAttributeNotFoundException extends DemoiselleException { + + private static final long serialVersionUID = 2554101387574235418L; + + public ManagedAttributeNotFoundException(String message, Throwable cause) { + super(message, cause); + } + + public ManagedAttributeNotFoundException(String message) { + super(message); + } + + public ManagedAttributeNotFoundException(Throwable cause) { + super(cause); + } + +} diff --git a/impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedInvokationException.java b/impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedInvokationException.java new file mode 100644 index 0000000..fce2ff0 --- /dev/null +++ b/impl/core/src/main/java/br/gov/frameworkdemoiselle/management/ManagedInvokationException.java @@ -0,0 +1,23 @@ +package br.gov.frameworkdemoiselle.management; + +import br.gov.frameworkdemoiselle.DemoiselleException; + + +public class ManagedInvokationException extends DemoiselleException { + + private static final long serialVersionUID = -1542365184737242152L; + + public ManagedInvokationException(String message, Throwable cause) { + super(message, cause); + } + + public ManagedInvokationException(String message) { + super(message); + } + + public ManagedInvokationException(Throwable cause) { + super(cause); + } + + +} -- libgit2 0.21.2