Commit f40f1e3207f45771bec5858afabb8f09544ab511
1 parent
911c265c
Exists in
master
Convertidas exceções do demoiselle em exceções do padrão JMX, para
evitar erros de ClassNotFoundException quando um cliente remoto tenta exibir uma exceção personalizada.
Showing
1 changed file
with
39 additions
and
3 deletions
Show diff stats
impl/extension/jmx/src/main/java/br/gov/frameworkdemoiselle/internal/DynamicMBeanProxy.java
| ... | ... | @@ -58,6 +58,8 @@ import br.gov.frameworkdemoiselle.internal.management.ManagedType.FieldDetail; |
| 58 | 58 | import br.gov.frameworkdemoiselle.internal.management.ManagedType.MethodDetail; |
| 59 | 59 | import br.gov.frameworkdemoiselle.internal.management.ManagedType.ParameterDetail; |
| 60 | 60 | import br.gov.frameworkdemoiselle.internal.management.Management; |
| 61 | +import br.gov.frameworkdemoiselle.management.ManagedAttributeNotFoundException; | |
| 62 | +import br.gov.frameworkdemoiselle.management.ManagedInvokationException; | |
| 61 | 63 | import br.gov.frameworkdemoiselle.stereotype.ManagementController; |
| 62 | 64 | import br.gov.frameworkdemoiselle.util.Beans; |
| 63 | 65 | import br.gov.frameworkdemoiselle.util.ResourceBundle; |
| ... | ... | @@ -95,7 +97,21 @@ public class DynamicMBeanProxy implements DynamicMBean { |
| 95 | 97 | } |
| 96 | 98 | |
| 97 | 99 | Management manager = Beans.getReference(Management.class); |
| 98 | - return manager.getProperty(managedType, attribute); | |
| 100 | + | |
| 101 | + try{ | |
| 102 | + return manager.getProperty(managedType, attribute); | |
| 103 | + } | |
| 104 | + catch(DemoiselleException de){ | |
| 105 | + if (ManagedAttributeNotFoundException.class.isInstance(de)){ | |
| 106 | + throw new AttributeNotFoundException(de.getMessage()); | |
| 107 | + } | |
| 108 | + else if (ManagedInvokationException.class.isInstance(de)){ | |
| 109 | + throw new MBeanException(new Exception(de.getMessage())); | |
| 110 | + } | |
| 111 | + else{ | |
| 112 | + throw de; | |
| 113 | + } | |
| 114 | + } | |
| 99 | 115 | } |
| 100 | 116 | |
| 101 | 117 | @Override |
| ... | ... | @@ -108,7 +124,21 @@ public class DynamicMBeanProxy implements DynamicMBean { |
| 108 | 124 | } |
| 109 | 125 | |
| 110 | 126 | Management manager = Beans.getReference(Management.class); |
| 111 | - manager.setProperty(managedType, attribute.getName(), attribute.getValue()); | |
| 127 | + | |
| 128 | + try{ | |
| 129 | + manager.setProperty(managedType, attribute.getName(), attribute.getValue()); | |
| 130 | + } | |
| 131 | + catch(DemoiselleException de){ | |
| 132 | + if (ManagedAttributeNotFoundException.class.isInstance(de)){ | |
| 133 | + throw new AttributeNotFoundException(de.getMessage()); | |
| 134 | + } | |
| 135 | + else if (ManagedInvokationException.class.isInstance(de)){ | |
| 136 | + throw new MBeanException(new Exception(de.getMessage())); | |
| 137 | + } | |
| 138 | + else{ | |
| 139 | + throw de; | |
| 140 | + } | |
| 141 | + } | |
| 112 | 142 | } |
| 113 | 143 | |
| 114 | 144 | @Override |
| ... | ... | @@ -161,7 +191,13 @@ public class DynamicMBeanProxy implements DynamicMBean { |
| 161 | 191 | } |
| 162 | 192 | |
| 163 | 193 | Management manager = Beans.getReference(Management.class); |
| 164 | - return manager.invoke(managedType, actionName, params); | |
| 194 | + | |
| 195 | + try{ | |
| 196 | + return manager.invoke(managedType, actionName, params); | |
| 197 | + } | |
| 198 | + catch(DemoiselleException de){ | |
| 199 | + throw new MBeanException(new Exception(de.getMessage())); | |
| 200 | + } | |
| 165 | 201 | } |
| 166 | 202 | |
| 167 | 203 | /** | ... | ... |