diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt index c31a26ca919..40a67e7efb3 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt @@ -35,13 +35,14 @@ import org.jetbrains.kotlin.idea.versions.hasKotlinJsKjsmFile import org.jetbrains.kotlin.idea.vfilefinder.IDEVirtualFileFinder import org.jetbrains.kotlin.utils.ifEmpty -data class RepositoryDescription(val id: String, val name: String, val url: String, val isSnapshot: Boolean) +data class RepositoryDescription(val id: String, val name: String, val url: String, val bintrayUrl: String?, val isSnapshot: Boolean) @JvmField val SNAPSHOT_REPOSITORY = RepositoryDescription( "sonatype.oss.snapshots", "Sonatype OSS Snapshot Repository", "http://oss.sonatype.org/content/repositories/snapshots", + null, isSnapshot = true) @JvmField @@ -49,6 +50,7 @@ val EAP_REPOSITORY = RepositoryDescription( "bintray.kotlin.eap", "Bintray Kotlin EAP Repository", "http://dl.bintray.com/kotlin/kotlin-eap", + "https://bintray.com/kotlin/kotlin-eap/kotlin/", isSnapshot = false) @JvmField @@ -56,8 +58,18 @@ val EAP_11_REPOSITORY = RepositoryDescription( "bintray.kotlin.eap", "Bintray Kotlin 1.1 EAP Repository", "http://dl.bintray.com/kotlin/kotlin-eap-1.1", + "https://bintray.com/kotlin/kotlin-eap-1.1/kotlin/", isSnapshot = false) +fun RepositoryDescription.toRepositorySnippet() = "maven {\nurl '$url'\n}" + +fun getRepositoryForVersion(version: String): RepositoryDescription? = when { + isSnapshot(version) -> SNAPSHOT_REPOSITORY + useEap11Repository(version) -> EAP_11_REPOSITORY + isEap(version) -> EAP_REPOSITORY + else -> null +} + fun isModuleConfigured(module: Module): Boolean { return allConfigurators().any { it.getStatus(module) == ConfigureKotlinStatus.CONFIGURED diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt index 65135efc10a..1b4f6e9b675 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/GradleKotlinFrameworkSupportProvider.kt @@ -43,25 +43,13 @@ abstract class GradleKotlinFrameworkSupportProvider(val frameworkTypeId: String, modifiableModelsProvider: ModifiableModelsProvider, buildScriptData: BuildScriptDataBuilder) { var kotlinVersion = bundledRuntimeVersion() - - val additionalRepository: String? = when { - kotlinVersion == "@snapshot@" -> { - kotlinVersion = "1.1-SNAPSHOT" - KotlinWithGradleConfigurator.SNAPSHOT_REPOSITORY_SNIPPET - } - useEap11Repository(kotlinVersion) -> { - KotlinWithGradleConfigurator.EAP_11_REPOSITORY_SNIPPET - } - isEap(kotlinVersion) -> { - KotlinWithGradleConfigurator.EAP_REPOSITORY_SNIPPET - } - else -> { - null - } + val additionalRepository = getRepositoryForVersion(kotlinVersion) + if (isSnapshot(bundledRuntimeVersion())) { + kotlinVersion = "1.1-SNAPSHOT" } if (additionalRepository != null) { - val oneLineRepository = additionalRepository.replace('\n', ' ') + val oneLineRepository = additionalRepository.toRepositorySnippet().replace('\n', ' ') buildScriptData.addBuildscriptRepositoriesDefinition(oneLineRepository) buildScriptData.addRepositoriesDefinition("mavenCentral()") diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt index e4d83082b5a..73961aade6b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt @@ -218,10 +218,6 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator { val CLASSPATH = "classpath \"$GROUP_ID:$GRADLE_PLUGIN_ID:\$kotlin_version\"" - val SNAPSHOT_REPOSITORY_SNIPPET = "maven {\nurl '" + SNAPSHOT_REPOSITORY.url + "'\n}" - val EAP_REPOSITORY_SNIPPET = "maven {\nurl '" + EAP_REPOSITORY.url + "'\n}" - val EAP_11_REPOSITORY_SNIPPET = "maven {\nurl '" + EAP_11_REPOSITORY.url + "'\n}" - private val MAVEN_CENTRAL = "mavenCentral()\n" private val JCENTER = "jcenter()\n" @@ -515,10 +511,9 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator { } private fun addRepository(repositoriesBlock: GrClosableBlock, version: String): Boolean { + val repository = getRepositoryForVersion(version) val snippet = when { - isSnapshot(version) -> SNAPSHOT_REPOSITORY_SNIPPET - useEap11Repository(version) -> EAP_11_REPOSITORY_SNIPPET - isEap(version) -> EAP_REPOSITORY_SNIPPET + repository != null -> repository.toRepositorySnippet() !isRepositoryConfigured(repositoriesBlock) -> MAVEN_CENTRAL else -> return false } diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/ui/ConfigureDialogWithModulesAndVersion.java b/idea/src/org/jetbrains/kotlin/idea/framework/ui/ConfigureDialogWithModulesAndVersion.java index d5980fad566..4e6f028812e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/ui/ConfigureDialogWithModulesAndVersion.java +++ b/idea/src/org/jetbrains/kotlin/idea/framework/ui/ConfigureDialogWithModulesAndVersion.java @@ -38,6 +38,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinPluginUtil; import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinInProjectUtilsKt; import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator; +import org.jetbrains.kotlin.idea.configuration.RepositoryDescription; import org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryUtilKt; import javax.swing.*; @@ -55,8 +56,6 @@ public class ConfigureDialogWithModulesAndVersion extends DialogWrapper { private static final String VERSIONS_LIST_URL = "http://search.maven.org/solrsearch/select?q=g:%22org.jetbrains.kotlin%22+AND+a:%22kotlin-runtime%22&core=gav&rows=20&wt=json"; - private static final String EAP_VERSIONS_URL = - "https://bintray.com/kotlin/kotlin-eap/kotlin/"; @NotNull private final String minimumVersion; private final ChooseModulePanel chooseModulePanel; @@ -176,8 +175,9 @@ public class ConfigureDialogWithModulesAndVersion extends DialogWrapper { List versions = Lists.newArrayList(); String bundledRuntimeVersion = KotlinRuntimeLibraryUtilKt.bundledRuntimeVersion(); - if (ConfigureKotlinInProjectUtilsKt.isEap(bundledRuntimeVersion)) { - HttpURLConnection eapConnection = HttpConfigurable.getInstance().openHttpConnection(EAP_VERSIONS_URL + bundledRuntimeVersion); + RepositoryDescription repositoryDescription = ConfigureKotlinInProjectUtilsKt.getRepositoryForVersion(bundledRuntimeVersion); + if (repositoryDescription != null && repositoryDescription.getBintrayUrl() != null) { + HttpURLConnection eapConnection = HttpConfigurable.getInstance().openHttpConnection(repositoryDescription.getBintrayUrl() + bundledRuntimeVersion); try { int timeout = (int) TimeUnit.SECONDS.toMillis(30); eapConnection.setConnectTimeout(timeout);