Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.apache.struts2.json.smd;
  
 
 import java.util.List;
 
 public class SMDGenerator {
 
     private static final Logger LOG = LoggerFactory.getLogger(SMDGenerator.class);
 
     // rootObject is based on OGNL expression (action by default)
     private Object rootObject;
     private List<PatternexcludeProperties;
     private boolean ignoreInterfaces;
 
     public SMDGenerator(Object rootList<PatternexcludePropertiesboolean ignoreInterfaces) {
         this. = root;
         this. = excludeProperties;
         this. = ignoreInterfaces;
     }
 
     public org.apache.struts2.json.smd.SMD generate(ActionInvocation actionInvocation) {
         ActionContext actionContext = actionInvocation.getInvocationContext();
         HttpServletRequest request = (HttpServletRequestactionContext.get(.);
 
         Class clazz = .getClass();
         org.apache.struts2.json.smd.SMD smd = new org.apache.struts2.json.smd.SMD();
         // URL
         smd.setServiceUrl(request.getRequestURI());
 
         // customize SMD
         org.apache.struts2.json.annotations.SMD smdAnnotation = (SMDclazz.getAnnotation(SMD.class);
         if (smdAnnotation != null) {
             smd.setObjectName(smdAnnotation.objectName());
             smd.setServiceType(smdAnnotation.serviceType());
             smd.setVersion(smdAnnotation.version());
         }
 
         // get public methods
         Method[] methods = JSONUtil.listSMDMethods(clazz);
 
         for (Method method : methods) {
             processAnnotatedMethod(smdmethod);
         }
         return smd;
 
     }
 
     private void processAnnotatedMethod(org.apache.struts2.json.smd.SMD smdMethod method) {
         SMDMethod smdMethodAnnotation = method.getAnnotation(SMDMethod.class);
         // SMDMethod annotation is required
         if (shouldProcessMethod(methodsmdMethodAnnotation)) {
             String methodName = readMethodName(methodsmdMethodAnnotation);
             org.apache.struts2.json.smd.SMDMethod smdMethod = new org.apache.struts2.json.smd.SMDMethod(methodName);
             smd.addSMDMethod(smdMethod);
 
             // find params for this method
             processMethodsParameters(methodsmdMethod);
 
         } else if(.isDebugEnabled()) {
             .debug("Ignoring property " + method.getName());
         }
     }
 
     private void processMethodsParameters(Method methodorg.apache.struts2.json.smd.SMDMethod smdMethod) {
         int parametersCount = method.getParameterTypes().length;
         if (parametersCount > 0) {
 
             Annotation[][] parameterAnnotations = method.getParameterAnnotations();
 
             for (int i = 0; i < parametersCounti++) {
                 processParameter(smdMethodparameterAnnotations[i], i);
             }
         }
     }
 
     private void processParameter(org.apache.struts2.json.smd.SMDMethod smdMethodAnnotation[] parameterAnnotationint i) {
         // are you ever going to pick shorter names? nope
         SMDMethodParameter smdMethodParameterAnnotation = getSMDMethodParameterAnnotation(parameterAnnotation);
         String paramName = buildParamName(ismdMethodParameterAnnotation);
         smdMethod.addSMDMethodParameter(new org.apache.struts2.json.smd.SMDMethodParameter(paramName));
     }
 
     private String buildParamName(int iSMDMethodParameter smdMethodParameterAnnotation) {
         return smdMethodParameterAnnotation != null ? smdMethodParameterAnnotation.name() : "p" + i;
     }
 
    private String readMethodName(Method methodSMDMethod smdMethodAnnotation) {
        return smdMethodAnnotation.name().length() == 0 ? method.getName() : smdMethodAnnotation.name();
    }
    private boolean shouldProcessMethod(Method methodSMDMethod smdMethodAnnotation) {
        return ((smdMethodAnnotation != null) && !this.shouldExcludeProperty(method.getName()));
    }
    private boolean shouldExcludeProperty(String expr) {
        if (this. != null) {
            for (Pattern pattern : this.) {
                if (pattern.matcher(expr).matches())
                    return true;
            }
        }
        return false;
    }

    
Find an SMDethodParameter annotation on this array
            Annotation[] annotations) {
        for (Annotation annotation : annotations) {
            if (annotation instanceof org.apache.struts2.json.annotations.SMDMethodParameter)
                return (org.apache.struts2.json.annotations.SMDMethodParameterannotation;
        }
        return null;
    }
New to GrepCode? Check out our FAQ X