private void analyzeParameter(JavaMethod javaMethod, Method method) { // Create the parameter: Parameter parameter = new Parameter(); analyzeName(javaMethod, parameter); analyzeAnnotations(javaMethod, parameter); analyzeDocumentation(javaMethod, parameter); // Get the direction: if (isAnnotatedWith(javaMethod, ModelAnnotations.IN)) { parameter.setIn(true); } if (isAnnotatedWith(javaMethod, ModelAnnotations.OUT)) { parameter.setOut(true); } // Get the type: assignTypeReference(javaMethod.getReturns(), parameter::setType); // Get the default value: String javaValue = javaMethod.getSourceCode(); if (javaValue != null && !javaValue.isEmpty()) { Expression expression = analyzeExpression(javaValue); parameter.setDefaultValue(expression); } // Add the parameter to the method: parameter.setDeclaringMethod(method); method.addParameter(parameter); }
/** * For method 'signatures' (e:g FromStorageDomain, DirectLun) Parameters should * be mostly copied from the base method (e.g: add). This method does this. */ private void copyParameters(Method childMethod, Method method) { for (Parameter parameter : method.getParameters()) { Parameter newParameter = new Parameter(); //copy from base parameter. Member-involvement-trees not copied on purpose. newParameter.setIn(parameter.isIn()); newParameter.setOut(parameter.isOut()); newParameter.setType(parameter.getType()); newParameter.setName(parameter.getName()); newParameter.setDoc(parameter.getDoc()); newParameter.setSource(parameter.getSource()); newParameter.getAnnotations().addAll(parameter.getAnnotations()); //set the child-method as the declaring method newParameter.setDeclaringMethod(childMethod); childMethod.addParameter(newParameter); } }