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