From 38ac3049ec4ef03762b3dce5de224589ccd78451 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Fri, 27 Feb 2026 17:37:11 +0800 Subject: [PATCH] Add customization module for cosmos SDK --- .../customization/pom.xml | 17 +++++++++ .../src/main/java/CosmosCustomization.java | 37 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 sdk/cosmos/azure-resourcemanager-cosmos/customization/pom.xml create mode 100644 sdk/cosmos/azure-resourcemanager-cosmos/customization/src/main/java/CosmosCustomization.java diff --git a/sdk/cosmos/azure-resourcemanager-cosmos/customization/pom.xml b/sdk/cosmos/azure-resourcemanager-cosmos/customization/pom.xml new file mode 100644 index 000000000000..03081e2e097a --- /dev/null +++ b/sdk/cosmos/azure-resourcemanager-cosmos/customization/pom.xml @@ -0,0 +1,17 @@ + + + + + com.azure + azure-code-customization-parent + 1.0.0-beta.1 + ../../../parents/azure-code-customization-parent + + + com.azure.resourcemanager + azure-resourcemanager-cosmos-customization + 1.0.0-beta.1 + 4.0.0 + diff --git a/sdk/cosmos/azure-resourcemanager-cosmos/customization/src/main/java/CosmosCustomization.java b/sdk/cosmos/azure-resourcemanager-cosmos/customization/src/main/java/CosmosCustomization.java new file mode 100644 index 000000000000..661e239562a7 --- /dev/null +++ b/sdk/cosmos/azure-resourcemanager-cosmos/customization/src/main/java/CosmosCustomization.java @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +import com.azure.autorest.customization.ClassCustomization; +import com.azure.autorest.customization.Customization; +import com.azure.autorest.customization.LibraryCustomization; +import com.azure.autorest.customization.PackageCustomization; +import com.github.javaparser.ast.type.ClassOrInterfaceType; +import org.slf4j.Logger; + +/** + * Code customization after code generation. + */ +public class CosmosCustomization extends Customization { + @Override + public void customize(LibraryCustomization customization, Logger logger) { + PackageCustomization fluentModelsPackage = customization.getPackage("com.azure.resourcemanager.cosmos.fluent.models"); + // change base class from `ProxyResource` to `Resource`, to avoid breaking changes and compilation errors + customizeResourceBaseClass(fluentModelsPackage.getClass("DatabaseAccountGetResultsInner")); + } + + /** + * Customize the base class to be "com.azure.core.management.Resource". + * + * @param customization the customization for class + */ + private static void customizeResourceBaseClass(ClassCustomization customization) { + customization.customizeAst(ast -> { + ast.getClassByName(customization.getClassName()).ifPresent(clazz -> { + String resourceClassName = "com.azure.core.management.Resource"; + ast.addImport(resourceClassName); + clazz.getExtendedTypes().clear(); + clazz.addExtendedType(new ClassOrInterfaceType(null, "Resource")); + }); + }); + } +}