Commit d32fb1d635c16dc02b80b9c8a1cf564b0444cbda

Authored by Dancovich
1 parent dbc9dcc2
Exists in master

Resolvido bug em que tipo da operação (ACTION, INFO, etc.) era ignorado

pela extensão demoiselle-jmx.
impl/core/src/main/java/br/gov/frameworkdemoiselle/annotation/OperationType.java
... ... @@ -36,7 +36,6 @@
36 36 */
37 37 package br.gov.frameworkdemoiselle.annotation;
38 38  
39   -import javax.management.MBeanOperationInfo;
40 39  
41 40  
42 41 /**
... ... @@ -56,34 +55,25 @@ public enum OperationType {
56 55 * ManagedOperation is write-only, it causes the application
57 56 * to change some of it's behaviour but doesn't return any kind of information
58 57 */
59   - ACTION(MBeanOperationInfo.ACTION)
  58 + ACTION
60 59 ,
61 60 /**
62 61 * ManagedOperation is read-only, it will operate over data provided by the application and return some information,
63 62 * but will not change the application in any way.
64 63 */
65   - INFO(MBeanOperationInfo.INFO)
  64 + INFO
66 65 ,
67 66 /**
68 67 * ManagedOperation is read-write, it will both change the way the application work and return some information regarding
69 68 * the result of the operation.
70 69 */
71   - ACTION_INFO(MBeanOperationInfo.ACTION_INFO)
  70 + ACTION_INFO
72 71 ,
73 72 /**
74 73 * The effect of calling this operation is unknown. This is the default type and if this type is assigned to an operation,
75 74 * the user must rely on the {@link ManagedOperation#description()} attribute to learn about how the operation works.
76 75 */
77   - UNKNOWN(MBeanOperationInfo.UNKNOWN);
  76 + UNKNOWN
78 77  
79   - private int operationTypeValue;
80   -
81   - private OperationType(int type){
82   - this.operationTypeValue = type;
83   - }
84   -
85   - public int getValue(){
86   - return operationTypeValue;
87   - }
88 78  
89 79 }
... ...
impl/core/src/main/java/br/gov/frameworkdemoiselle/internal/management/ManagedType.java
... ... @@ -47,6 +47,7 @@ import javax.inject.Qualifier;
47 47 import br.gov.frameworkdemoiselle.DemoiselleException;
48 48 import br.gov.frameworkdemoiselle.annotation.ManagedOperation;
49 49 import br.gov.frameworkdemoiselle.annotation.ManagedProperty;
  50 +import br.gov.frameworkdemoiselle.annotation.OperationType;
50 51 import br.gov.frameworkdemoiselle.annotation.ManagedProperty.ManagedPropertyAccess;
51 52 import br.gov.frameworkdemoiselle.annotation.OperationParameter;
52 53 import br.gov.frameworkdemoiselle.internal.producer.ResourceBundleProducer;
... ... @@ -163,6 +164,7 @@ public class ManagedType {
163 164 Class<?>[] parameterTypes = method.getParameterTypes();
164 165 Annotation[][] parameterAnnotations = method.getParameterAnnotations();
165 166 ParameterDetail[] parameterDetails = new ParameterDetail[parameterTypes.length];
  167 + OperationType operationType = opAnnotation.type();
166 168  
167 169 for (int i = 0; i < parameterTypes.length; i++) {
168 170 OperationParameter paramAnnotation = null;
... ... @@ -181,7 +183,7 @@ public class ManagedType {
181 183  
182 184 // Com todas as informações, criamos nossa instância de MethodDetail e
183 185 // acrescentamos na lista de todas as operações.
184   - MethodDetail detail = new MethodDetail(method, opAnnotation.description(), parameterDetails);
  186 + MethodDetail detail = new MethodDetail(method, opAnnotation.description(), operationType, parameterDetails);
185 187 operationMethods.put(method.getName(), detail);
186 188 }
187 189 }
... ... @@ -326,12 +328,15 @@ public class ManagedType {
326 328  
327 329 private final ParameterDetail[] parameterTypers;
328 330  
329   - private String description;
  331 + private final String description;
  332 +
  333 + private final OperationType type;
330 334  
331   - public MethodDetail(Method method, String description, ParameterDetail[] parameterTypers) {
  335 + public MethodDetail(Method method, String description, OperationType type,ParameterDetail[] parameterTypers) {
332 336 super();
333 337 this.method = method;
334 338 this.description = description;
  339 + this.type = type;
335 340 this.parameterTypers = parameterTypers;
336 341 }
337 342  
... ... @@ -347,6 +352,10 @@ public class ManagedType {
347 352 return description;
348 353 }
349 354  
  355 + public OperationType getType() {
  356 + return type;
  357 + }
  358 +
350 359 }
351 360  
352 361 public final class ParameterDetail {
... ...
impl/extension/jmx/src/main/java/br/gov/frameworkdemoiselle/jmx/internal/DynamicMBeanProxy.java
... ... @@ -212,9 +212,27 @@ public class DynamicMBeanProxy implements DynamicMBean {
212 212  
213 213 // Com todas as informações, criamos nossa instância de MBeanOperationInfo e
214 214 // acrescentamos na lista de todas as operações.
  215 + int operationType = 0;
  216 + switch(methodDetail.getType()){
  217 + case ACTION:
  218 + operationType = MBeanOperationInfo.ACTION;
  219 + break;
  220 +
  221 + case INFO:
  222 + operationType = MBeanOperationInfo.INFO;
  223 + break;
  224 +
  225 + case ACTION_INFO:
  226 + operationType = MBeanOperationInfo.ACTION_INFO;
  227 + break;
  228 +
  229 + default:
  230 + operationType = MBeanOperationInfo.UNKNOWN;
  231 + }
  232 +
215 233 MBeanOperationInfo operation = new MBeanOperationInfo(methodDetail.getMethod().getName(),
216 234 methodDetail.getDescription(), parameters, methodDetail.getMethod().getReturnType().getName(),
217   - MBeanOperationInfo.ACTION_INFO);
  235 + operationType);
218 236  
219 237 operations.add(operation);
220 238  
... ...