private void addStatusField(RestActionClass actionClass, MethodSpec.Builder builder) { for (Element element : actionClass.getAnnotatedElements(Status.class)) { String fieldAddress = getFieldAddress(actionClass, element); if (TypeUtils.containsType(element, Boolean.class, boolean.class)) { builder.addStatement(fieldAddress + " = response.isSuccessful()", element); } else if (TypeUtils.containsType(element, Integer.class, int.class, long.class)) { builder.addStatement( fieldAddress + " = ($T) response.getStatus()", element, element.asType()); } else if (equalTypes(element, String.class)) { builder.addStatement(fieldAddress + " = Integer.toString(response.getStatus())", element); } else if (TypeUtils.containsType(element, Long.class)) { builder.addStatement(fieldAddress + " = (long) response.getStatus()", element); } } }
private MethodSpec createFillErrorMethod(RestActionClass actionClass) { MethodSpec.Builder builder = MethodSpec.methodBuilder("fillError") .addModifiers(Modifier.PUBLIC) .addAnnotation(Override.class) .returns(actionClass.getTypeName()) .addParameter(actionClass.getTypeName(), "action") .addParameter(Throwable.class, "error"); for (Element element : actionClass.getAnnotatedElements(Error.class)) { String fieldAddress = getFieldAddress(actionClass, element); if (TypeUtils.containsType(element, Throwable.class)) { builder.addStatement(fieldAddress + " = error", element); } else if (TypeUtils.containsType(element, Exception.class)) { builder.addStatement(fieldAddress + " = ($T) error", element, Exception.class); } } builder.addStatement("return action"); return builder.build(); }
private void addParts(RestActionClass actionClass, MethodSpec.Builder builder) { for (Element element : actionClass.getAnnotatedElements(Part.class)) { Part part = element.getAnnotation(Part.class); String partName = part.value(); String name = element.getSimpleName().toString(); if (StringUtils.isEmpty(partName)) { partName = name; } String encode = part.encoding(); String httpBodyName = "httpBody"; builder.beginControlFlow("if (action.$L != null)", name); if (TypeUtils.equalTypes(element, File.class)) { builder.addStatement( "$T $L = new $T($S, action.$L)", HttpBody.class, httpBodyName, FileBody.class, encode, name); } else if (TypeUtils.equalTypes(element, byte[].class)) { builder.addStatement( "$T $L = new $T($S, action.$L)", HttpBody.class, httpBodyName, ByteArrayBody.class, encode, name); } else if (TypeUtils.equalTypes(element, String.class)) { builder.addStatement( "$T $L = new $T($S, action.$L.getBytes())", HttpBody.class, httpBodyName, ByteArrayBody.class, encode, name); } else { builder.addStatement("$T $L = action.$L", HttpBody.class, httpBodyName, name); } builder.addStatement("requestBuilder.addPart($S, $L, $S)", partName, httpBodyName, encode); builder.endControlFlow(); } }
private void addRequestQueries(RestActionClass actionClass, MethodSpec.Builder builder) { for (Element element : actionClass.getAnnotatedElements(Query.class)) { Query annotation = element.getAnnotation(Query.class); if (TypeUtils.isPrimitive(element)) { builder.addStatement( "requestBuilder.addQueryParam($S, action.$L + \"\", $L, $L)", annotation.value(), element, annotation.encodeName(), annotation.encodeValue()); } else { builder.beginControlFlow("if (action.$L != null)", element); builder.addStatement( "requestBuilder.addQueryParam($S, action.$L.toString(), $L, $L)", annotation.value(), element, annotation.encodeName(), annotation.encodeValue()); builder.endControlFlow(); } } }