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 | /** |