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,6 +58,8 @@ import br.gov.frameworkdemoiselle.internal.management.ManagedType.FieldDetail; | ||
| 58 | import br.gov.frameworkdemoiselle.internal.management.ManagedType.MethodDetail; | 58 | import br.gov.frameworkdemoiselle.internal.management.ManagedType.MethodDetail; |
| 59 | import br.gov.frameworkdemoiselle.internal.management.ManagedType.ParameterDetail; | 59 | import br.gov.frameworkdemoiselle.internal.management.ManagedType.ParameterDetail; |
| 60 | import br.gov.frameworkdemoiselle.internal.management.Management; | 60 | import br.gov.frameworkdemoiselle.internal.management.Management; |
| 61 | +import br.gov.frameworkdemoiselle.management.ManagedAttributeNotFoundException; | ||
| 62 | +import br.gov.frameworkdemoiselle.management.ManagedInvokationException; | ||
| 61 | import br.gov.frameworkdemoiselle.stereotype.ManagementController; | 63 | import br.gov.frameworkdemoiselle.stereotype.ManagementController; |
| 62 | import br.gov.frameworkdemoiselle.util.Beans; | 64 | import br.gov.frameworkdemoiselle.util.Beans; |
| 63 | import br.gov.frameworkdemoiselle.util.ResourceBundle; | 65 | import br.gov.frameworkdemoiselle.util.ResourceBundle; |
| @@ -95,7 +97,21 @@ public class DynamicMBeanProxy implements DynamicMBean { | @@ -95,7 +97,21 @@ public class DynamicMBeanProxy implements DynamicMBean { | ||
| 95 | } | 97 | } |
| 96 | 98 | ||
| 97 | Management manager = Beans.getReference(Management.class); | 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 | @Override | 117 | @Override |
| @@ -108,7 +124,21 @@ public class DynamicMBeanProxy implements DynamicMBean { | @@ -108,7 +124,21 @@ public class DynamicMBeanProxy implements DynamicMBean { | ||
| 108 | } | 124 | } |
| 109 | 125 | ||
| 110 | Management manager = Beans.getReference(Management.class); | 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 | @Override | 144 | @Override |
| @@ -161,7 +191,13 @@ public class DynamicMBeanProxy implements DynamicMBean { | @@ -161,7 +191,13 @@ public class DynamicMBeanProxy implements DynamicMBean { | ||
| 161 | } | 191 | } |
| 162 | 192 | ||
| 163 | Management manager = Beans.getReference(Management.class); | 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 | /** |