Skip to content

[WIP]: Updating ClientCoreClientMethodTemplate to reuse functionalities from base ClientMethodTemplate #7505

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@
import com.microsoft.typespec.http.client.generator.core.model.clientmodel.ProxyMethodParameter;
import com.microsoft.typespec.http.client.generator.core.util.MethodUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -28,7 +28,7 @@ static ClientMethodParametersDetails process(Request request, boolean mapFluxByt
final List<Parameter> codeModelParameters = getCodeModelParameters(request, isProtocolMethod);
final List<ParametersTuple> parametersTuples = new ArrayList<>();
final List<String> requiredNullableParameterExpressions = new ArrayList<>();
final Map<String, String> validateParameterExpressions = new HashMap<>();
final Map<String, String> validateParameterExpressions = new LinkedHashMap<>();
final boolean isJsonPatch = MethodUtil.isContentTypeInRequest(request, "application/json-patch+json");

final ParametersTransformationProcessor transformationProcessor
Original file line number Diff line number Diff line change
@@ -39,7 +39,7 @@
import com.microsoft.typespec.http.client.generator.core.util.MethodNamer;
import com.microsoft.typespec.http.client.generator.core.util.MethodUtil;
import com.microsoft.typespec.http.client.generator.core.util.TemplateUtil;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
@@ -69,15 +69,15 @@ public static ClientMethodTemplate getInstance() {
* @param clientMethod the client method to add parameter validations for.
* @param settings AutoRest generation settings, used to determine if validations should be added.
*/
protected static void addValidations(JavaBlock function, ClientMethod clientMethod, JavaSettings settings) {
protected void addValidations(JavaBlock function, ClientMethod clientMethod, JavaSettings settings) {
if (!settings.isClientSideValidations()) {
return;
}
final boolean isSync = JavaSettings.getInstance().isSyncStackEnabled() && clientMethod.getType().isSync();
// Parameter expressions to validate for non-null value.
final List<String> paramReferenceExpressions = clientMethod.getRequiredNullableParameterExpressions();
// Parameter expressions for custom validation (key is the expression, value is the validation).
final Map<String, String> validateParamExpressions = new HashMap<>(clientMethod.getValidateExpressions());
final Map<String, String> validateParamExpressions = new LinkedHashMap<>(clientMethod.getValidateExpressions());

for (String paramReferenceExpression : paramReferenceExpressions) {
final JavaIfBlock nullCheck = function.ifBlock(paramReferenceExpression + " == null", ifBlock -> {
@@ -114,16 +114,22 @@ protected static void addValidations(JavaBlock function, ClientMethod clientMeth
* @param function The client method code block.
* @param clientMethod The client method.
*/
protected static void addOptionalVariables(JavaBlock function, ClientMethod clientMethod) {
protected void addOptionalVariables(JavaBlock function, ClientMethod clientMethod) {
if (!clientMethod.getOnlyRequiredParameters()) {
return;
}

final MethodPageDetails pageDetails
= clientMethod.isPageStreamingType() ? clientMethod.getMethodPageDetails() : null;
for (ClientMethodParameter parameter : clientMethod.getMethodParameters()) {
if (parameter.isRequired()) {
// Parameter is required and will be part of the method signature.
continue;
}
if (pageDetails != null && pageDetails.shouldHideParameter(parameter)) {
continue;
}

final String defaultValue = parameterDefaultValueExpression(parameter);
function.line("final %s %s = %s;", parameter.getClientType(), parameter.getName(),
defaultValue == null ? "null" : defaultValue);
@@ -137,7 +143,7 @@ protected static void addOptionalVariables(JavaBlock function, ClientMethod clie
* @param clientMethod The client method.
* @param settings AutoRest generation settings.
*/
protected static void addOptionalAndConstantVariables(JavaBlock function, ClientMethod clientMethod,
protected void addOptionalAndConstantVariables(JavaBlock function, ClientMethod clientMethod,
JavaSettings settings) {
final List<ProxyMethodParameter> proxyMethodParameters = clientMethod.getProxyMethod().getParameters();
for (ProxyMethodParameter parameter : proxyMethodParameters) {
@@ -203,8 +209,7 @@ private static String parameterDefaultValueExpression(MethodParameter parameter)
* @param clientMethod The client method.
* @param settings AutoRest generation settings.
*/
protected static void applyParameterTransformations(JavaBlock function, ClientMethod clientMethod,
JavaSettings settings) {
protected void applyParameterTransformations(JavaBlock function, ClientMethod clientMethod, JavaSettings settings) {
for (ParameterTransformation transformation : clientMethod.getParameterTransformations().asList()) {
if (!transformation.hasMappings()) {
// the case that this flattened parameter is not original parameter from any other parameters
@@ -316,7 +321,7 @@ protected static void applyParameterTransformations(JavaBlock function, ClientMe
* @param function The client method code block.
* @param clientMethod The client method.
*/
protected static void convertClientTypesToWireTypes(JavaBlock function, ClientMethod clientMethod) {
protected void convertClientTypesToWireTypes(JavaBlock function, ClientMethod clientMethod) {
final List<ProxyMethodParameter> proxyMethodParameters = clientMethod.getProxyMethod().getParameters();
for (ProxyMethodParameter parameter : proxyMethodParameters) {
final RequestParameterLocation location = parameter.getRequestParameterLocation();
@@ -568,7 +573,7 @@ private static String modelIterableToDelimitedStringOfWireValues(String paramete
* @param wireType the wire type of the parameter, used to determine whether to encode as a string or url.
* @return Java code that converts a byte[] parameter to Base64 encoded form.
*/
private static String byteArrayToBase64Encoded(String parameterName, IType wireType) {
protected String byteArrayToBase64Encoded(String parameterName, IType wireType) {
if ((wireType == ClassType.STRING)) {
// byte[] to Base64-encoded String.
return "Base64Util.encodeToString" + "(" + parameterName + ")";
Original file line number Diff line number Diff line change
@@ -9,7 +9,6 @@
import com.microsoft.typespec.http.client.generator.core.model.clientmodel.ClassType;
import com.microsoft.typespec.http.client.generator.core.model.clientmodel.ClientMethod;
import com.microsoft.typespec.http.client.generator.core.model.clientmodel.ParameterSynthesizedOrigin;
import com.microsoft.typespec.http.client.generator.core.model.clientmodel.ProxyMethod;
import com.microsoft.typespec.http.client.generator.core.model.javamodel.JavaType;
import com.microsoft.typespec.http.client.generator.core.template.clientcore.ClientCoreClientMethodTemplate;
import com.microsoft.typespec.http.client.generator.core.util.TemplateUtil;
@@ -27,8 +26,7 @@ public static AzureVNextClientMethodTemplate getInstance() {
}

@Override
protected void generateLongRunningBeginSync(ClientMethod clientMethod, JavaType typeBlock,
ProxyMethod restAPIMethod, JavaSettings settings) {
protected void generateLongRunningBeginSync(ClientMethod clientMethod, JavaType typeBlock, JavaSettings settings) {
typeBlock.annotation("ServiceMethod(returns = ReturnType.LONG_RUNNING_OPERATION)");
String contextParam;
if (clientMethod.getParameters().stream().anyMatch(p -> p.getClientType().equals(ClassType.REQUEST_CONTEXT))) {
Loading
Oops, something went wrong.
Loading
Oops, something went wrong.