private List<Name> toNames(List<MemberInvolvementTree> attributes) { List<Name> names = new ArrayList<>(); for (MemberInvolvementTree attribute : attributes) { names.add(attribute.getAlternative()==null ? attribute.shallowToString() : combineAlternatives(attribute)); } return names; }
private Name combineAlternatives(MemberInvolvementTree attribute) { Name name1 = attribute.shallowToString(); Name name2 = attribute.getAlternative().shallowToString(); if (name1.compareTo(name2) < 0) { return names.concatenate(name1, name2); } else { return names.concatenate(name2, name1); } } }
private void generateAlternativesValidation(Name parameterName, MemberInvolvementTree attribute, List<MemberInvolvementTree> attributeComponents, String attributePath) { List<MemberInvolvementTree> alternativeAttributeComponents = stackAttributeComponents(attribute.getAlternative()); String condition1 = "if ( (" + getFullAttributeCheck(javaNames.getJavaMemberStyleName(parameterName), attributeComponents, Operator.OR, false) + ")"; String condition2 = "(" + getFullAttributeCheck(javaNames.getJavaMemberStyleName(parameterName), alternativeAttributeComponents, Operator.OR, false) + ") ) {"; javaBuffer.addLine(condition1 + " && " + condition2); String fullAttributePath1 = convertToModelNotation(parameterName + "." + attributePath); String fullAttributePath2 = convertToModelNotation(parameterName + "." + getSchemaPath(alternativeAttributeComponents)); javaBuffer.addLine( "throw new ValidationException(\"Parameters '%1$s' or '%2$s' are mandatory but both were not provided.\");", fullAttributePath1, fullAttributePath2 ); }
MemberInvolvementTree alternative = attribute.getAlternative(); if (alternative != null) { list = stackAttributeComponents(alternative);
private void handleSignature(Name parentMethodName, Method signature, Name parameterName, Type parameterType) { Parameter parameter = signature.getParameter(parameterName); Iterator<MemberInvolvementTree> iterator = parameter.getMandatoryAttributes().iterator(); if (iterator.hasNext()) {//if there are any mandatory attributes javaBuffer.addDocComment(signature.getName().toString()); javaBuffer.addLine("if (" +javaNames.getJavaMemberStyleName(parameter.getName()) + "!=null"); while (iterator.hasNext()) { MemberInvolvementTree attribute = iterator.next(); List<MemberInvolvementTree> list = stackAttributeComponents(attribute); String attributeCheck = getFullAttributeCheck(javaNames.getJavaMemberStyleName(parameter.getName()), list, Operator.AND, true); if (attribute.getAlternative()!=null) {//'or' expression list = stackAttributeComponents(attribute.getAlternative()); String alternativeCheck = getFullAttributeCheck(javaNames.getJavaMemberStyleName(parameter.getName()), list, Operator.AND, true); String fullCheck = mergeChecks(attributeCheck, alternativeCheck); javaBuffer.addLine(fullCheck); } else { javaBuffer.addLine(attributeCheck); } } javaBuffer.addLine(") {"); javaBuffer.addLine("return " + resourceName.getSimpleName() + ".class.getMethod(\"" + javaNames.getJavaMemberStyleName(parentMethodName) + javaNames.getJavaClassStyleName(signature.getName()) + "\", " + javaNames.getJavaClassStyleName(parameter.getType().getName()) + ".class);"); javaBuffer.addLine("}"); } }
String attributePath = getSchemaPath(attributeComponents); if (attribute.hasAlternative()) { //'OR' scenario List<MemberInvolvementTree> alternativeAttributeComponents = stackAttributeComponents(attribute.getAlternative()); alternativeAttributeComponents.add(0, component); String condition1 = "if ( (" + getFullAttributeCheck(javaNames.getJavaMemberStyleName(ACTION), attributeComponents, Operator.OR, false) + ")";