From 1d7ac70529d0f6afc5e9c188dd1da8e96409ba27 Mon Sep 17 00:00:00 2001 From: Denis Zaichenko Date: Tue, 27 May 2025 16:14:08 +0200 Subject: [PATCH] IJPL-177442 Changes required for rebase. It was impossible to solve the conflicts, because PluginUiModel was changed in almost all following commits. (cherry picked from commit c234adb6a5d3d8c46475561c345d3b74758adcd6) IJ-MR-163725 GitOrigin-RevId: 8c0216b0cfebaca71a5b06884469edece71628de --- platform/extensions/api-dump.txt | 1 - .../platform-impl/api-dump-unreviewed.txt | 21 ------ platform/platform-impl/api-dump.txt | 30 ++++++++ .../ide/plugins/PluginNodeVendorDetails.kt | 2 + .../com/intellij/ide/plugins/api/PluginDto.kt | 9 +-- .../plugins/api/PluginDtoDescriptorWrapper.kt | 71 +------------------ .../marketplace/PluginRepositoryObjects.kt | 48 ++++++------- .../newui/DefaultUiPluginManagerController.kt | 2 +- .../newui/PluginDtoModelBuilderFactory.kt | 20 +++--- .../plugins/newui/PluginNodeModelBuilder.kt | 10 +-- .../ide/plugins/newui/PluginUiModel.kt | 8 +-- .../ide/plugins/newui/PluginUiModelAdapter.kt | 21 ++---- .../ide/plugins/newui/PluginUiModelBuilder.kt | 3 +- .../impl/PluginUpdateDialog.java | 2 +- .../PluginAdvertiserService.kt | 3 +- ...ntellij.platform.pluginManager.backend.iml | 4 +- ...tellij.platform.pluginManager.frontend.iml | 4 +- ...intellij.platform.pluginManager.shared.iml | 4 +- 18 files changed, 94 insertions(+), 169 deletions(-) diff --git a/platform/extensions/api-dump.txt b/platform/extensions/api-dump.txt index f90f4e5c014e..b47ce65626f2 100644 --- a/platform/extensions/api-dump.txt +++ b/platform/extensions/api-dump.txt @@ -197,7 +197,6 @@ bf:com.intellij.openapi.extensions.PluginId$$serializer - f:deserialize(kotlinx.serialization.encoding.Decoder):com.intellij.openapi.extensions.PluginId - f:getDescriptor():kotlinx.serialization.descriptors.SerialDescriptor - f:serialize(kotlinx.serialization.encoding.Encoder,com.intellij.openapi.extensions.PluginId):V -- typeParametersSerializers():kotlinx.serialization.KSerializer[] f:com.intellij.openapi.extensions.PluginId$Companion - f:findId(java.lang.String):com.intellij.openapi.extensions.PluginId - f:findId(java.lang.String[]):com.intellij.openapi.extensions.PluginId diff --git a/platform/platform-impl/api-dump-unreviewed.txt b/platform/platform-impl/api-dump-unreviewed.txt index 7713353e3c8d..8d47df7a5006 100644 --- a/platform/platform-impl/api-dump-unreviewed.txt +++ b/platform/platform-impl/api-dump-unreviewed.txt @@ -3429,19 +3429,6 @@ e:com.intellij.ide.plugins.PluginNode$Status - sf:UNKNOWN:com.intellij.ide.plugins.PluginNode$Status - s:valueOf(java.lang.String):com.intellij.ide.plugins.PluginNode$Status - s:values():com.intellij.ide.plugins.PluginNode$Status[] -f:com.intellij.ide.plugins.PluginNodeVendorDetails -- (java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean):V -- b:(java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean,I,kotlin.jvm.internal.DefaultConstructorMarker):V -- f:component1():java.lang.String -- f:component2():java.lang.String -- f:copy(java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean):com.intellij.ide.plugins.PluginNodeVendorDetails -- bs:copy$default(com.intellij.ide.plugins.PluginNodeVendorDetails,java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean,I,java.lang.Object):com.intellij.ide.plugins.PluginNodeVendorDetails -- equals(java.lang.Object):Z -- f:getName():java.lang.String -- f:getUrl():java.lang.String -- hashCode():I -- f:isTrader():Z -- f:isVerified():Z f:com.intellij.ide.plugins.PluginStateManager - ():V - s:addStateListener(com.intellij.ide.plugins.PluginStateListener):V @@ -3575,14 +3562,6 @@ f:com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate - f:getPluginId():java.lang.String - f:getVersion():java.lang.String - hashCode():I -bf:com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate$$serializer -- kotlinx.serialization.internal.GeneratedSerializer -- sf:INSTANCE:com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate$$serializer -- f:childSerializers():kotlinx.serialization.KSerializer[] -- f:deserialize(kotlinx.serialization.encoding.Decoder):com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate -- f:getDescriptor():kotlinx.serialization.descriptors.SerialDescriptor -- f:serialize(kotlinx.serialization.encoding.Encoder,com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate):V -- typeParametersSerializers():kotlinx.serialization.KSerializer[] f:com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate$Companion - f:serializer():kotlinx.serialization.KSerializer f:com.intellij.ide.plugins.marketplace.MarketplaceRequestsKt diff --git a/platform/platform-impl/api-dump.txt b/platform/platform-impl/api-dump.txt index 9b78080a5a15..ec0bbc48954d 100644 --- a/platform/platform-impl/api-dump.txt +++ b/platform/platform-impl/api-dump.txt @@ -216,6 +216,29 @@ com.intellij.ide.plugins.PluginManagerMain$PluginEnabler - enable(java.util.Collection):Z - enableById(java.util.Set):Z - isDisabled(com.intellij.openapi.extensions.PluginId):Z +f:com.intellij.ide.plugins.PluginNodeVendorDetails +- sf:Companion:com.intellij.ide.plugins.PluginNodeVendorDetails$Companion +- (java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean):V +- b:(java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean,I,kotlin.jvm.internal.DefaultConstructorMarker):V +- f:component1():java.lang.String +- f:component2():java.lang.String +- f:copy(java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean):com.intellij.ide.plugins.PluginNodeVendorDetails +- bs:copy$default(com.intellij.ide.plugins.PluginNodeVendorDetails,java.lang.String,java.lang.String,java.lang.Boolean,java.lang.Boolean,I,java.lang.Object):com.intellij.ide.plugins.PluginNodeVendorDetails +- equals(java.lang.Object):Z +- f:getName():java.lang.String +- f:getUrl():java.lang.String +- hashCode():I +- f:isTrader():Z +- f:isVerified():Z +bf:com.intellij.ide.plugins.PluginNodeVendorDetails$$serializer +- kotlinx.serialization.internal.GeneratedSerializer +- sf:INSTANCE:com.intellij.ide.plugins.PluginNodeVendorDetails$$serializer +- f:childSerializers():kotlinx.serialization.KSerializer[] +- f:deserialize(kotlinx.serialization.encoding.Decoder):com.intellij.ide.plugins.PluginNodeVendorDetails +- f:getDescriptor():kotlinx.serialization.descriptors.SerialDescriptor +- f:serialize(kotlinx.serialization.encoding.Encoder,com.intellij.ide.plugins.PluginNodeVendorDetails):V +f:com.intellij.ide.plugins.PluginNodeVendorDetails$Companion +- f:serializer():kotlinx.serialization.KSerializer com.intellij.ide.plugins.PluginStateListener - a:install(com.intellij.ide.plugins.IdeaPluginDescriptor):V - uninstall(com.intellij.ide.plugins.IdeaPluginDescriptor):V @@ -230,6 +253,13 @@ com.intellij.ide.plugins.auth.PluginRepositoryAuthProvider - sf:EP_NAME:com.intellij.openapi.extensions.ExtensionPointName - a:canHandle(java.lang.String):Z - a:getAuthHeaders(java.lang.String):java.util.Map +bf:com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate$$serializer +- kotlinx.serialization.internal.GeneratedSerializer +- sf:INSTANCE:com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate$$serializer +- f:childSerializers():kotlinx.serialization.KSerializer[] +- f:deserialize(kotlinx.serialization.encoding.Decoder):com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate +- f:getDescriptor():kotlinx.serialization.descriptors.SerialDescriptor +- f:serialize(kotlinx.serialization.encoding.Encoder,com.intellij.ide.plugins.marketplace.IdeCompatibleUpdate):V com.intellij.ide.startup.StartupActionScriptManager$ActionCommand - a:execute():V com.intellij.ide.trustedProjects.TrustedProjectsLocator diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginNodeVendorDetails.kt b/platform/platform-impl/src/com/intellij/ide/plugins/PluginNodeVendorDetails.kt index 40b1a894e7ea..09dedede12f7 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginNodeVendorDetails.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginNodeVendorDetails.kt @@ -2,10 +2,12 @@ package com.intellij.ide.plugins import com.intellij.openapi.util.NlsSafe +import kotlinx.serialization.Serializable /** * Marketplace vendor details. */ +@Serializable data class PluginNodeVendorDetails( @NlsSafe val name: String, val url: String? = null, diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/api/PluginDto.kt b/platform/platform-impl/src/com/intellij/ide/plugins/api/PluginDto.kt index 0f00e6aa2715..b25b0dba41ff 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/api/PluginDto.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/api/PluginDto.kt @@ -2,6 +2,7 @@ package com.intellij.ide.plugins.api import com.intellij.ide.plugins.IdeaPluginDescriptor +import com.intellij.ide.plugins.PluginNodeVendorDetails import com.intellij.ide.plugins.newui.PluginDependencyModel import com.intellij.ide.plugins.newui.PluginSource import com.intellij.ide.plugins.newui.PluginUiModel @@ -44,6 +45,7 @@ class PluginDto( override var releaseVersion: Int = 0 override var displayCategory: String? = null + override var vendorDetails: PluginNodeVendorDetails? = null override var reviewComments: ReviewsPageContainer? = null // Mutable properties @@ -53,9 +55,6 @@ class PluginDto( override var documentationUrl: String? = null override var sourceCodeUrl: String? = null override var reportPluginUrl: String? = null - override var verifiedName: String? = null - override var isVerified: Boolean = false - override var isTrader: Boolean = false override var screenShots: List? = null override var externalPluginIdForScreenShots: String? = null override var externalPluginId: String? = null @@ -121,9 +120,7 @@ class PluginDto( documentationUrl = model.documentationUrl sourceCodeUrl = model.sourceCodeUrl reportPluginUrl = model.reportPluginUrl - verifiedName = model.verifiedName - isVerified = model.isVerified - isTrader = model.isTrader + vendorDetails = model.vendorDetails reviewComments = model.reviewComments screenShots = model.screenShots?.toList() externalPluginIdForScreenShots = model.externalPluginIdForScreenShots diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/api/PluginDtoDescriptorWrapper.kt b/platform/platform-impl/src/com/intellij/ide/plugins/api/PluginDtoDescriptorWrapper.kt index 52aa4bfddafe..5b35f8097e30 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/api/PluginDtoDescriptorWrapper.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/api/PluginDtoDescriptorWrapper.kt @@ -1,24 +1,18 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.ide.plugins.api -import com.intellij.ide.plugins.ContainerDescriptor -import com.intellij.ide.plugins.ContentModule -import com.intellij.ide.plugins.IdeaPluginDescriptorEx -import com.intellij.ide.plugins.ModuleDependencies -import com.intellij.ide.plugins.ModuleLoadingRule +import com.intellij.ide.plugins.IdeaPluginDescriptor import com.intellij.ide.plugins.PluginDependencyImpl import com.intellij.ide.plugins.PluginDependency -import com.intellij.openapi.extensions.ExtensionDescriptor import com.intellij.openapi.extensions.PluginId import com.intellij.openapi.util.NlsSafe -import com.intellij.platform.plugins.parser.impl.elements.ActionElement import org.jetbrains.annotations.ApiStatus import org.jetbrains.annotations.Nls import java.nio.file.Path import java.util.Date @ApiStatus.Internal -class PluginDtoDescriptorWrapper(private val pluginDto: PluginDto) : IdeaPluginDescriptorEx { +class PluginDtoDescriptorWrapper(private val pluginDto: PluginDto) : IdeaPluginDescriptor { private val dependenciesList: List by lazy { pluginDto.dependencies.map { @@ -102,70 +96,11 @@ class PluginDtoDescriptorWrapper(private val pluginDto: PluginDto) : IdeaPluginD throw UnsupportedOperationException("No direct mapping for pluginClassLoader in PluginDto") } - override val moduleName: String? - get() = throw UnsupportedOperationException("No direct mapping for moduleName in PluginDto") - - override val moduleLoadingRule: ModuleLoadingRule - get() = throw UnsupportedOperationException("No direct mapping for moduleLoadingRule in PluginDto") - - override val incompatiblePlugins: List - get() = throw UnsupportedOperationException("No direct mapping for incompatiblePlugins in PluginDto") - - override val pluginAliases: List - get() = throw UnsupportedOperationException("No direct mapping for pluginAliases in PluginDto") - - override val moduleDependencies: ModuleDependencies - get() = throw UnsupportedOperationException("No direct mapping for moduleDependencies in PluginDto") - - override val packagePrefix: String? - get() = throw UnsupportedOperationException("No direct mapping for packagePrefix in PluginDto") - - override val contentModules: List - get() = throw UnsupportedOperationException("No direct mapping for contentModules in PluginDto") - - override val appContainerDescriptor: ContainerDescriptor - get() = throw UnsupportedOperationException("No direct mapping for appContainerDescriptor in PluginDto") - - override val projectContainerDescriptor: ContainerDescriptor - get() = throw UnsupportedOperationException("No direct mapping for projectContainerDescriptor in PluginDto") - - override val moduleContainerDescriptor: ContainerDescriptor - get() = throw UnsupportedOperationException("No direct mapping for moduleContainerDescriptor in PluginDto") - - override val extensions: Map> - get() = throw UnsupportedOperationException("No direct mapping for extensions in PluginDto") - - override val actions: List - get() = throw UnsupportedOperationException("No direct mapping for actions in PluginDto") - - override val isUseIdeaClassLoader: Boolean - get() = throw UnsupportedOperationException("No direct mapping for isUseIdeaClassLoader in PluginDto") - - override val isIndependentFromCoreClassLoader: Boolean - get() = throw UnsupportedOperationException("No direct mapping for isIndependentFromCoreClassLoader in PluginDto") - - override val useCoreClassLoader: Boolean - get() = throw UnsupportedOperationException("No direct mapping for useCoreClassLoader in PluginDto") - - override var isMarkedForLoading: Boolean = pluginDto.isEnabled - @Deprecated("Deprecated in Java") override fun isEnabled(): Boolean = pluginDto.isEnabled - @Deprecated("Deprecated in Java") override fun setEnabled(enabled: Boolean) { - // Cannot modify the PluginDto directly here - isMarkedForLoading = enabled + throw UnsupportedOperationException("Write operations are not allowed here") } - override fun toString(): String = - "PluginDtoDescriptorWrapper(name=${getName()}, id=${getPluginId()}, version=${getVersion()}, isBundled=${isBundled()})" - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (other !is IdeaPluginDescriptorEx) return false - return getPluginId() == other.pluginId - } - - override fun hashCode(): Int = getPluginId().hashCode() } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/marketplace/PluginRepositoryObjects.kt b/platform/platform-impl/src/com/intellij/ide/plugins/marketplace/PluginRepositoryObjects.kt index b62d34170b49..8e0f34e62d3c 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/marketplace/PluginRepositoryObjects.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/marketplace/PluginRepositoryObjects.kt @@ -4,6 +4,7 @@ package com.intellij.ide.plugins.marketplace import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonProperty import com.intellij.ide.plugins.PluginNode +import com.intellij.ide.plugins.PluginNodeVendorDetails import com.intellij.ide.plugins.RepositoryHelper import com.intellij.ide.plugins.advertiser.PluginData import com.intellij.ide.plugins.newui.PluginUiModel @@ -30,7 +31,7 @@ data class IdeCompatibleUpdate( val externalPluginId: String = "", @get:JsonProperty("pluginXmlId") val pluginId: String = "", - val version: String = "" + val version: String = "", ) /** @@ -55,7 +56,7 @@ data class IntellijUpdateMetadata( val until: String? = null, val productCode: String? = null, val url: String? = null, - val size: Int = 0 + val size: Int = 0, ) { fun toUiModel(): PluginUiModel { val pluginId = PluginId.getId(id) @@ -107,7 +108,7 @@ class MarketplaceSearchPluginData( val externalPluginId: String? = null, val downloads: String = "", @get:JsonProperty("nearestUpdate") - val nearestUpdate: NearestUpdate? = null + val nearestUpdate: NearestUpdate? = null, ) { fun toPluginNode(): PluginNode { val pluginNode = PluginNode(PluginId.getId(id)) @@ -130,7 +131,7 @@ class MarketplaceSearchPluginData( builder.setName(name) builder.setRating("%.2f".format(Locale.US, rating)) builder.setDownloads(downloads) - builder.setOrganization(organization) + builder.setVendorDetails(organization) builder.setExternalPluginId(externalPluginId) builder.setExternalUpdateId(externalUpdateId ?: nearestUpdate?.id) builder.setIsPaid(isPaid) @@ -159,7 +160,7 @@ class NearestUpdate( @get:JsonProperty("updateCompatibility") val updateCompatibility: Map = emptyMap(), @get:JsonProperty("isCompatible") - val compatible: Boolean = true + val compatible: Boolean = true, ) /** @@ -205,7 +206,7 @@ internal class MarketplaceBrokenPlugin( val since: String? = null, val until: String? = null, val originalSince: String? = null, - val originalUntil: String? = null + val originalUntil: String? = null, ) @Serializable @@ -217,7 +218,7 @@ data class PluginReviewComment( val comment: @Nls String = "", val rating: Int = 0, val author: ReviewCommentAuthor = ReviewCommentAuthor(), - val plugin: ReviewCommentPlugin = ReviewCommentPlugin() + val plugin: ReviewCommentPlugin = ReviewCommentPlugin(), ) { fun getDate(): Long = parseLong(cdate, 0) } @@ -226,14 +227,14 @@ data class PluginReviewComment( @ApiStatus.Internal @JsonIgnoreProperties(ignoreUnknown = true) data class ReviewCommentAuthor( - val name: @Nls String = "" + val name: @Nls String = "", ) @Serializable @ApiStatus.Internal @JsonIgnoreProperties(ignoreUnknown = true) data class ReviewCommentPlugin( - val link: @Nls String = "" + val link: @Nls String = "", ) @Serializable @@ -241,7 +242,7 @@ data class ReviewCommentPlugin( @JsonIgnoreProperties(ignoreUnknown = true) data class SalesMetadata( val trialPeriod: Int? = null, - val customTrialPeriods: List? = null + val customTrialPeriods: List? = null, ) @Serializable @@ -249,7 +250,7 @@ data class SalesMetadata( @JsonIgnoreProperties(ignoreUnknown = true) data class CustomTrialPeriod( @JsonProperty("productCode") val productCode: String, - @JsonProperty("trialPeriod") val trialPeriod: Int + @JsonProperty("trialPeriod") val trialPeriod: Int, ) @Serializable @@ -264,7 +265,7 @@ data class IntellijPluginMetadata( val documentationUrl: String? = null, val sourceCodeUrl: String? = null, val reportPluginUrl: String? = null, - val salesInfo: SalesMetadata? = null + val salesInfo: SalesMetadata? = null, ) { fun toPluginNode(pluginNode: PluginNode) { @@ -283,32 +284,31 @@ data class IntellijPluginMetadata( pluginNode.sourceCodeUrl = sourceCodeUrl pluginNode.reportPluginUrl = reportPluginUrl pluginNode.defaultTrialPeriod = salesInfo?.trialPeriod - pluginNode.setCustomTrialPeriodMap(salesInfo?.customTrialPeriods?.associate { - p -> p.productCode to p.trialPeriod + pluginNode.setCustomTrialPeriodMap(salesInfo?.customTrialPeriods?.associate { p -> + p.productCode to p.trialPeriod }) } - + @ApiStatus.Internal fun toPluginUiModel(model: PluginUiModel) { if (vendor != null) { - model.verifiedName = vendor.name - model.isVerified = vendor.verified - model.isTrader = vendor.trader + val details = PluginNodeVendorDetails(vendor.name, vendor.url, vendor.trader, vendor.verified) + model.vendorDetails = details } - + model.forumUrl = forumUrl model.licenseUrl = licenseUrl model.bugtrackerUrl = bugtrackerUrl model.documentationUrl = documentationUrl model.sourceCodeUrl = sourceCodeUrl model.reportPluginUrl = reportPluginUrl - + screenshots?.let { model.screenShots = it } - + model.defaultTrialPeriod = salesInfo?.trialPeriod - model.customTrialPeriods = salesInfo?.customTrialPeriods?.associate { - p -> p.productCode to p.trialPeriod + model.customTrialPeriods = salesInfo?.customTrialPeriods?.associate { p -> + p.productCode to p.trialPeriod } } } @@ -322,5 +322,5 @@ data class PluginVendorMetadata( @get:JsonProperty("isTrader") val trader: Boolean = false, @get:JsonProperty("isVerified") - val verified: Boolean = false + val verified: Boolean = false, ) \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/DefaultUiPluginManagerController.kt b/platform/platform-impl/src/com/intellij/ide/plugins/newui/DefaultUiPluginManagerController.kt index ce00458a766f..bab4e89f04c1 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/DefaultUiPluginManagerController.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/DefaultUiPluginManagerController.kt @@ -402,7 +402,7 @@ object DefaultUiPluginManagerController : UiPluginManagerController { for (pluginId in requiredPluginIds) { var result: IdeaPluginDescriptor? = plugins.find { pluginId == it.pluginId } if (result == null && looksLikePlatformPluginAlias(pluginId)) { - result = plugins.find { it is IdeaPluginDescriptorEx && it.pluginAliases.contains(pluginId) } + result = plugins.find { it is IdeaPluginDescriptorImpl && it.pluginAliases.contains(pluginId) } if (result != null) { session.pluginStates[pluginId] = PluginEnabledState.ENABLED pluginsToEnable.add(pluginId) diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginDtoModelBuilderFactory.kt b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginDtoModelBuilderFactory.kt index fad5887b126c..6767062c6f8a 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginDtoModelBuilderFactory.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginDtoModelBuilderFactory.kt @@ -1,16 +1,15 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.ide.plugins.newui -import com.intellij.ide.plugins.PluginDependency +import com.intellij.ide.plugins.PluginNodeVendorDetails import com.intellij.ide.plugins.api.PluginDto import com.intellij.openapi.extensions.PluginId import org.jetbrains.annotations.ApiStatus import java.text.SimpleDateFormat -import java.util.Date import java.util.Locale @ApiStatus.Internal -class PluginDtoModelBuilder(pluginId: PluginId): PluginUiModelBuilder { +class PluginDtoModelBuilder(pluginId: PluginId) : PluginUiModelBuilder { private val resultDto = PluginDto(null, pluginId) override fun setId(id: String): PluginDtoModelBuilder { @@ -103,7 +102,8 @@ class PluginDtoModelBuilder(pluginId: PluginId): PluginUiModelBuilder { try { val format = SimpleDateFormat("yyyy-MM-dd", Locale.US) resultDto.date = format.parse(date).time - } catch (e: Exception) { + } + catch (e: Exception) { // If date parsing fails, leave date as 0 } return this @@ -132,11 +132,6 @@ class PluginDtoModelBuilder(pluginId: PluginId): PluginUiModelBuilder { return this } - override fun setOrganization(string: String?): PluginUiModelBuilder { - resultDto.organization = string - return this - } - override fun setIsConverted(converted: Boolean): PluginUiModelBuilder { resultDto.isConverted = converted return this @@ -177,6 +172,13 @@ class PluginDtoModelBuilder(pluginId: PluginId): PluginUiModelBuilder { return this } + override fun setVendorDetails(organization: String?): PluginUiModelBuilder { + if (organization != null) { + resultDto.vendorDetails = PluginNodeVendorDetails(organization) + } + return this + } + override fun build(): PluginUiModel { return resultDto } diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginNodeModelBuilder.kt b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginNodeModelBuilder.kt index 71897de92522..236919c43dc0 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginNodeModelBuilder.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginNodeModelBuilder.kt @@ -79,6 +79,11 @@ class PluginNodeModelBuilder(private val pluginId: PluginId) : PluginUiModelBuil return this } + override fun setVendorDetails(organization: String?): PluginUiModelBuilder { + pluginNode.setVendorDetails(organization) + return this + } + override fun setSize(size: String?): PluginUiModelBuilder { if (size != null) pluginNode.size = size return this @@ -130,11 +135,6 @@ class PluginNodeModelBuilder(private val pluginId: PluginId) : PluginUiModelBuil return this } - override fun setOrganization(string: String?): PluginUiModelBuilder { - pluginNode.organization = string - return this - } - override fun setIsConverted(converted: Boolean): PluginUiModelBuilder { pluginNode.isConverted = converted return this diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModel.kt b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModel.kt index c0a8c44f6028..a653417dbd74 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModel.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModel.kt @@ -3,6 +3,7 @@ package com.intellij.ide.plugins.newui import com.intellij.ide.plugins.IdeaPluginDescriptor import com.intellij.ide.plugins.PluginManagerConfigurable +import com.intellij.ide.plugins.PluginNodeVendorDetails import com.intellij.ide.plugins.api.ReviewsPageContainer import com.intellij.ide.plugins.getTags import com.intellij.openapi.extensions.PluginId @@ -80,15 +81,10 @@ interface PluginUiModel { @get:NlsSafe var reportPluginUrl: String? - @get:NlsSafe - var verifiedName: String? - - var isVerified: Boolean - var isTrader: Boolean var reviewComments: ReviewsPageContainer? var screenShots: List? - var externalPluginIdForScreenShots: String? + var vendorDetails: PluginNodeVendorDetails? @get:NlsSafe var downloadUrl: String? diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModelAdapter.kt b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModelAdapter.kt index 08206db53b2b..e4fa06120e68 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModelAdapter.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModelAdapter.kt @@ -9,6 +9,7 @@ import com.intellij.ide.plugins.PluginManagementPolicy import com.intellij.ide.plugins.PluginManagerCore import com.intellij.ide.plugins.PluginManagerCore.getUnfulfilledOsRequirement import com.intellij.ide.plugins.PluginNode +import com.intellij.ide.plugins.PluginNodeVendorDetails import com.intellij.ide.plugins.api.ReviewsPageContainer import com.intellij.ide.plugins.marketplace.PluginReviewComment import com.intellij.openapi.extensions.PluginId @@ -122,28 +123,14 @@ class PluginUiModelAdapter( pluginDescriptor.reportPluginUrl = value } } - override var verifiedName: String? - get() = if (pluginDescriptor is PluginNode) pluginDescriptor.verifiedName else null + override var vendorDetails: PluginNodeVendorDetails? + get() = if(pluginDescriptor is PluginNode) pluginDescriptor.vendorDetails else null set(value) { if (pluginDescriptor is PluginNode) { - pluginDescriptor.verifiedName = value - } - } - override var isVerified: Boolean - get() = if (pluginDescriptor is PluginNode) pluginDescriptor.isVerified else false - set(value) { - if (pluginDescriptor is PluginNode) { - pluginDescriptor.isVerified = value + pluginDescriptor.vendorDetails = value } } - override var isTrader: Boolean - get() = if (pluginDescriptor is PluginNode) pluginDescriptor.isTrader else false - set(value) { - if (pluginDescriptor is PluginNode) { - pluginDescriptor.isTrader = value - } - } override var screenShots: List? get() = if (pluginDescriptor is PluginNode) pluginDescriptor.screenShots else null set(value) { diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModelBuilder.kt b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModelBuilder.kt index 65e48c07cc45..8039e8f3e9f5 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModelBuilder.kt +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginUiModelBuilder.kt @@ -1,7 +1,6 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.ide.plugins.newui -import com.intellij.ide.plugins.PluginDependency import com.intellij.openapi.extensions.PluginId import com.intellij.openapi.util.registry.Registry import org.jetbrains.annotations.ApiStatus @@ -34,7 +33,6 @@ interface PluginUiModelBuilder { fun addDependency(id: String, optional: Boolean): PluginUiModelBuilder fun addTag(tag: String): PluginUiModelBuilder fun setIncomplete(incomplete: Boolean): PluginUiModelBuilder - fun setOrganization(string: String?): PluginUiModelBuilder fun setIsConverted(converted: Boolean): PluginUiModelBuilder fun setIsPaid(isPaid: Boolean): PluginUiModelBuilder fun setIsFromMarketPlace(isFromMarketPlace: Boolean): PluginUiModelBuilder @@ -43,6 +41,7 @@ interface PluginUiModelBuilder { fun setTags(tags: List?): PluginUiModelBuilder fun setDate(date: Long): PluginUiModelBuilder fun setRepositoryName(repositoryName: String): PluginUiModelBuilder + fun setVendorDetails(organization: String?): PluginUiModelBuilder fun build(): PluginUiModel } diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginUpdateDialog.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginUpdateDialog.java index 4a0f06e5d3ba..d415eca7ccbd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginUpdateDialog.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/PluginUpdateDialog.java @@ -121,7 +121,7 @@ final class PluginUpdateDialog extends DialogWrapper { node.setChangeNotes(model.getChangeNotes()); node.setVersion(model.getVersion()); node.setVendor(model.getVendor()); - node.setVendorDetails(descriptor.getOrganization()) + node.setVendorDetails(model.getOrganization()); List dependencies = ContainerUtil.map(model.getDependencies(), it -> new PluginDependencyImpl(it.getPluginId(), null, it.isOptional())); node.setDependencies(dependencies); diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserService.kt b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserService.kt index c3b56057421d..c1bee6270c93 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserService.kt +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserService.kt @@ -332,7 +332,7 @@ open class PluginAdvertiserServiceImpl( .map { getSuggestionReason(it) } if (suggestedFeatures.isNotEmpty()) { - (descriptor as PluginNode).suggestedFeatures = suggestedFeatures + (descriptor.getDescriptor() as? PluginNode)?.suggestedFeatures = suggestedFeatures } } } @@ -365,7 +365,6 @@ open class PluginAdvertiserServiceImpl( .setVersion(descriptor.version) .setVendor(descriptor.vendor) .setVendorDetails(descriptor.organization) - .setDependencies(descriptor.dependencies) .setIsConverted(true) descriptor.dependencies.forEach { builder.addDependency(it.pluginId.idString, it.isOptional) } diff --git a/platform/pluginManager/backend/intellij.platform.pluginManager.backend.iml b/platform/pluginManager/backend/intellij.platform.pluginManager.backend.iml index b902d03fa3f1..407cf3f3bc00 100644 --- a/platform/pluginManager/backend/intellij.platform.pluginManager.backend.iml +++ b/platform/pluginManager/backend/intellij.platform.pluginManager.backend.iml @@ -9,8 +9,8 @@ - - + + diff --git a/platform/pluginManager/frontend/intellij.platform.pluginManager.frontend.iml b/platform/pluginManager/frontend/intellij.platform.pluginManager.frontend.iml index 2cce016bb418..cc17f03a10b4 100644 --- a/platform/pluginManager/frontend/intellij.platform.pluginManager.frontend.iml +++ b/platform/pluginManager/frontend/intellij.platform.pluginManager.frontend.iml @@ -9,8 +9,8 @@ - - + + diff --git a/platform/pluginManager/shared/intellij.platform.pluginManager.shared.iml b/platform/pluginManager/shared/intellij.platform.pluginManager.shared.iml index c4832ae0fb97..d14ee13871e9 100644 --- a/platform/pluginManager/shared/intellij.platform.pluginManager.shared.iml +++ b/platform/pluginManager/shared/intellij.platform.pluginManager.shared.iml @@ -9,8 +9,8 @@ - - + +