From 7642914a88411164ae4ac87bcee8e602fdec76ba Mon Sep 17 00:00:00 2001 From: Vladimir Krivosheev Date: Wed, 13 Dec 2017 17:50:06 +0100 Subject: [PATCH] =?UTF-8?q?RunConfigurationBase=20=E2=80=94=20serialize=20?= =?UTF-8?q?log=20file=20using=20persistence=20state=20component?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit do not call writeModule explicitly --- .../application/ApplicationConfiguration.java | 6 +- .../execution/remote/RemoteConfiguration.java | 5 - .../RunConfigurationExtensionsManager.java | 17 +- .../configurations/LogFileOptions.kt | 238 ++++++++---------- .../ModuleBasedConfiguration.java | 4 + .../configurations/PredefinedLogFile.java | 21 +- .../configurations/RunConfigurationBase.java | 40 +-- .../configurations/RunConfigurationOptions.kt | 24 +- .../logging/LogConfigurationPanel.java | 18 +- .../components/CollectionStoredProperty.kt | 6 +- .../util/src/com/intellij/util/SmartList.java | 18 +- .../src/com/intellij/util/xmlb/Converter.java | 16 +- .../src/run/PluginRunConfiguration.java | 2 +- .../groovy/mvc/MvcRunConfiguration.java | 2 - .../runner/GroovyScriptRunConfiguration.java | 1 - .../execution/junit/JUnitConfiguration.java | 1 - .../configuration/TestNGConfiguration.java | 1 - 17 files changed, 160 insertions(+), 260 deletions(-) diff --git a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java index 399477b67a78..aef847c351b6 100644 --- a/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/application/ApplicationConfiguration.java @@ -54,7 +54,6 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration myEnvs = new LinkedHashMap<>(); public boolean PASS_PARENT_ENVS = true; @@ -252,12 +251,11 @@ public class ApplicationConfiguration extends ModuleBasedConfiguration envs = getEnvs(); - //if (!envs.isEmpty()) { + if (!envs.isEmpty()) { EnvironmentVariablesComponent.writeExternal(element, envs); - //} + } ShortenCommandLine.writeShortenClasspathMethod(element, myShortenCommandLine); } diff --git a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java index bb204e0eb895..8a3ecca2679a 100644 --- a/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java +++ b/java/execution/impl/src/com/intellij/execution/remote/RemoteConfiguration.java @@ -24,7 +24,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.DefaultJDOMExternalizer; import com.intellij.openapi.util.InvalidDataException; import com.intellij.openapi.util.WriteExternalException; -import com.intellij.openapi.util.text.StringUtil; import org.jdom.Element; import org.jetbrains.annotations.NotNull; @@ -35,10 +34,6 @@ public class RemoteConfiguration extends ModuleBasedConfiguration extensions = new THashMap<>(); for (T extension : getApplicableExtensions(configuration)) { extensions.put(extension.getSerializationId(), extension); diff --git a/platform/lang-api/src/com/intellij/execution/configurations/LogFileOptions.kt b/platform/lang-api/src/com/intellij/execution/configurations/LogFileOptions.kt index 0f781a3d80e5..4ff94b21b5e4 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/LogFileOptions.kt +++ b/platform/lang-api/src/com/intellij/execution/configurations/LogFileOptions.kt @@ -1,20 +1,9 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. */ package com.intellij.execution.configurations +import com.intellij.openapi.components.BaseState import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.io.FileUtilRt import com.intellij.util.SmartList @@ -22,11 +11,8 @@ import com.intellij.util.containers.SmartHashSet import com.intellij.util.xmlb.Converter import com.intellij.util.xmlb.annotations.Attribute import com.intellij.util.xmlb.annotations.Tag -import com.intellij.util.xmlb.annotations.Transient - import java.io.File import java.nio.charset.Charset -import java.util.Collections import java.util.regex.Pattern /** @@ -36,118 +22,9 @@ import java.util.regex.Pattern * @since 5.1 */ @Tag("log_file") -class LogFileOptions { - @get:Attribute("alias") - var name: String? = null - @get:Attribute(value = "path", converter = PathConverter::class) - var pathPattern: String? = null - @get:Attribute("checked") - var isEnabled = true - @get:Attribute("skipped") - var isSkipContent = true - @get:Attribute("show_all") - var isShowAll = false - @get:Attribute(value = "charset", converter = CharsetConverter::class) - var charset: Charset - - val paths: Set - @Transient - get() { - val logFile = File(pathPattern!!) - if (logFile.exists()) { - return setOf(pathPattern) - } - - val dirIndex = pathPattern!!.lastIndexOf(File.separator) - if (dirIndex == -1) { - return emptySet() - } - - val files = SmartList() - collectMatchedFiles(File(pathPattern!!.substring(0, dirIndex)), - Pattern.compile(FileUtil.convertAntToRegexp(pathPattern!!.substring(dirIndex + File.separator.length))), files) - if (files.isEmpty()) { - return emptySet() - } - - if (isShowAll) { - val result = SmartHashSet() - result.ensureCapacity(files.size) - for (file in files) { - result.add(file.path) - } - return result - } - else { - var lastFile: File? = null - for (file in files) { - if (lastFile != null) { - if (file.lastModified() > lastFile.lastModified()) { - lastFile = file - } - } - else { - lastFile = file - } - } - assert(lastFile != null) - return setOf(lastFile!!.path) - } - } - - private class PathConverter : Converter() { - override fun fromString(value: String): String? { - return FileUtilRt.toSystemDependentName(value) - } - - override fun toString(value: String): String { - return FileUtilRt.toSystemIndependentName(value) - } - } - - private class CharsetConverter : Converter() { - override fun fromString(value: String): Charset? { - try { - return Charset.forName(value) - } - catch (ignored: Exception) { - return Charset.defaultCharset() - } - - } - - override fun toString(value: Charset): String { - return value.name() - } - } - - //read external - constructor() { - charset = Charset.defaultCharset() - } - - constructor(name: String, path: String, enabled: Boolean, skipContent: Boolean, showAll: Boolean) : this(name, path, null, enabled, - skipContent, showAll) { - } - - constructor(name: String, path: String, enabled: Boolean) : this(name, path, null, enabled, true, false) {} - - constructor(name: String, path: String, charset: Charset?, enabled: Boolean, skipContent: Boolean, showAll: Boolean) { - this.name = name - pathPattern = path - isEnabled = enabled - isSkipContent = skipContent - isShowAll = showAll - this.charset = charset ?: Charset.defaultCharset() - } - - @Transient - fun setLast(last: Boolean) { - isShowAll = !last - } - +class LogFileOptions : BaseState { companion object { - + @JvmStatic fun collectMatchedFiles(root: File, pattern: Pattern, files: MutableList) { val dirs = root.listFiles() ?: return for (dir in dirs) { @@ -157,6 +34,7 @@ class LogFileOptions { } } + @JvmStatic fun areEqual(options1: LogFileOptions?, options2: LogFileOptions?): Boolean { return if (options1 == null || options2 == null) { options1 === options2 @@ -169,4 +47,110 @@ class LogFileOptions { } } + + @get:Attribute("alias") + var name by string() + + @get:Attribute(value = "path", converter = PathConverter::class) + var pathPattern by string() + + @get:Attribute("checked") + var isEnabled by storedProperty(true) + + @get:Attribute("skipped") + var isSkipContent by storedProperty(true) + + @get:Attribute("show_all") + var isShowAll by storedProperty(false) + + @get:Attribute(value = "charset", converter = CharsetConverter::class) + var charset by storedProperty(Charset.defaultCharset()) + + fun getPaths(): Set { + val logFile = File(pathPattern!!) + if (logFile.exists()) { + return setOf(pathPattern!!) + } + + val dirIndex = pathPattern!!.lastIndexOf(File.separator) + if (dirIndex == -1) { + return emptySet() + } + + val files = SmartList() + collectMatchedFiles(File(pathPattern!!.substring(0, dirIndex)), + Pattern.compile(FileUtil.convertAntToRegexp(pathPattern!!.substring(dirIndex + File.separator.length))), files) + if (files.isEmpty()) { + return emptySet() + } + + if (isShowAll) { + val result = SmartHashSet() + result.ensureCapacity(files.size) + files.mapTo(result) { it.path } + return result + } + else { + var lastFile: File? = null + for (file in files) { + if (lastFile != null) { + if (file.lastModified() > lastFile.lastModified()) { + lastFile = file + } + } + else { + lastFile = file + } + } + assert(lastFile != null) + return setOf(lastFile!!.path) + } + } + + //read external + constructor() { + } + + @JvmOverloads + constructor(name: String?, path: String?, enabled: Boolean = true, skipContent: Boolean = true, showAll: Boolean = false) : this(name, path, null, enabled, skipContent, showAll) + + @JvmOverloads + constructor(name: String?, path: String?, charset: Charset?, enabled: Boolean = true, skipContent: Boolean = true, showAll: Boolean = false) { + this.name = name + pathPattern = path + isEnabled = enabled + isSkipContent = skipContent + isShowAll = showAll + this.charset = charset ?: Charset.defaultCharset() + } + + fun setLast(last: Boolean) { + isShowAll = !last + } } + +private class PathConverter : Converter() { + override fun fromString(value: String): String? { + return FileUtilRt.toSystemDependentName(value) + } + + override fun toString(value: String): String { + return FileUtilRt.toSystemIndependentName(value) + } +} + +private class CharsetConverter : Converter() { + override fun fromString(value: String): Charset? { + return try { + Charset.forName(value) + } + catch (ignored: Exception) { + Charset.defaultCharset() + } + + } + + override fun toString(value: Charset): String { + return value.name() + } +} \ No newline at end of file diff --git a/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java b/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java index de7d3cf0ea96..219db3b9eb85 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java +++ b/platform/lang-api/src/com/intellij/execution/configurations/ModuleBasedConfiguration.java @@ -80,6 +80,10 @@ public abstract class ModuleBasedConfiguration myLogFiles = new SmartList<>(); private List myPredefinedLogFiles = new SmartList<>(); private List myBeforeRunTasks = Collections.emptyList(); @@ -129,7 +127,6 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements @Override public RunConfiguration clone() { final RunConfigurationBase runConfiguration = (RunConfigurationBase)super.clone(); - runConfiguration.myLogFiles = new ArrayList<>(myLogFiles); runConfiguration.myPredefinedLogFiles = new ArrayList<>(myPredefinedLogFiles); runConfiguration.myOptions = createOptions(); @@ -160,7 +157,7 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements @NotNull public ArrayList getAllLogFiles() { - ArrayList list = new ArrayList<>(myLogFiles); + ArrayList list = new ArrayList<>(getLogFiles()); for (PredefinedLogFile predefinedLogFile : myPredefinedLogFiles) { final LogFileOptions options = getOptionsForPredefinedLogFile(predefinedLogFile); if (options != null) { @@ -172,20 +169,20 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements @NotNull public List getLogFiles() { - return myLogFiles; + return getOptions().getLogFiles(); } @SuppressWarnings("unused") public void addLogFile(String file, String alias, boolean checked) { - myLogFiles.add(new LogFileOptions(alias, file, checked, true, false)); + getOptions().getLogFiles().add(new LogFileOptions(alias, file, checked)); } public void addLogFile(String file, String alias, boolean checked, boolean skipContent, final boolean showAll) { - myLogFiles.add(new LogFileOptions(alias, file, checked, skipContent, showAll)); + getOptions().getLogFiles().add(new LogFileOptions(alias, file, checked, skipContent, showAll)); } public void removeAllLogFiles() { - myLogFiles.clear(); + getOptions().getLogFiles().clear(); } //invoke before run/debug tabs are shown. @@ -202,12 +199,6 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements @Override public void readExternal(@NotNull Element element) throws InvalidDataException { - myLogFiles.clear(); - for (Element o : element.getChildren(LOG_FILE)) { - LogFileOptions logFileOptions = new LogFileOptions(); - logFileOptions.readExternal(o); - myLogFiles.add(logFileOptions); - } myPredefinedLogFiles.clear(); for (Element fileElement : element.getChildren(PREDEFINED_LOG_FILE_ELEMENT)) { final PredefinedLogFile logFile = new PredefinedLogFile(); @@ -228,24 +219,17 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements @Override public void writeExternal(@NotNull Element element) throws WriteExternalException { - JDOMExternalizerUtil.addChildren(element, LOG_FILE, myLogFiles); JDOMExternalizerUtil.addChildren(element, PREDEFINED_LOG_FILE_ELEMENT, myPredefinedLogFiles); XmlSerializer.serializeObjectInto(myOptions, element); } @Transient public boolean isSaveOutputToFile() { - RunConfigurationOptions.OutputFileOptions fileOutput = myOptions.getFileOutput(); - return fileOutput != null && fileOutput.isSaveOutput(); + return myOptions.getFileOutput().isSaveOutput(); } public void setSaveOutputToFile(boolean redirectOutput) { - RunConfigurationOptions.OutputFileOptions fileOutput = myOptions.getFileOutput(); - if (fileOutput == null) { - fileOutput = new RunConfigurationOptions.OutputFileOptions(); - myOptions.setFileOutput(fileOutput); - } - fileOutput.setSaveOutput(redirectOutput); + myOptions.getFileOutput().setSaveOutput(redirectOutput); } @Attribute(SHOW_CONSOLE_ON_STD_OUT) @@ -268,17 +252,11 @@ public abstract class RunConfigurationBase extends UserDataHolderBase implements @Transient public String getOutputFilePath() { - RunConfigurationOptions.OutputFileOptions output = myOptions.getFileOutput(); - return output == null ? null : output.getFileOutputPath(); + return myOptions.getFileOutput().getFileOutputPath(); } public void setFileOutputPath(String fileOutputPath) { - RunConfigurationOptions.OutputFileOptions fileOutput = myOptions.getFileOutput(); - if (fileOutput == null) { - fileOutput = new RunConfigurationOptions.OutputFileOptions(); - myOptions.setFileOutput(fileOutput); - } - fileOutput.setFileOutputPath(fileOutputPath); + myOptions.getFileOutput().setFileOutputPath(fileOutputPath); } public boolean collectOutputFromProcessHandler() { diff --git a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationOptions.kt b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationOptions.kt index b4993c2c7043..8e671f84fa7e 100644 --- a/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationOptions.kt +++ b/platform/lang-api/src/com/intellij/execution/configurations/RunConfigurationOptions.kt @@ -4,23 +4,29 @@ package com.intellij.execution.configurations import com.intellij.openapi.components.BaseState -import com.intellij.util.xmlb.annotations.Attribute -import com.intellij.util.xmlb.annotations.OptionTag -import com.intellij.util.xmlb.annotations.Property -import com.intellij.util.xmlb.annotations.Tag +import com.intellij.util.xmlb.annotations.* open class RunConfigurationOptions : BaseState() { @Tag("output_file") class OutputFileOptions : BaseState() { - @get:Attribute("path") var fileOutputPath by string() - @get:Attribute("is_save") var isSaveOutput by storedProperty(false) + @get:Attribute("path") + var fileOutputPath by string() + @get:Attribute("is_save") + var isSaveOutput by storedProperty(false) } // we use object instead of 2 fields because XML serializer cannot reuse tag for several fields - @get:Property(surroundWithTag = false) var fileOutput by storedProperty() + @get:Property(surroundWithTag = false) + var fileOutput by bean(OutputFileOptions()) - @get:Attribute("show_console_on_std_out") var isShowConsoleOnStdOut by storedProperty(false) - @get:Attribute("show_console_on_std_err") var isShowConsoleOnStdErr by storedProperty(false) + @get:Attribute("show_console_on_std_out") + var isShowConsoleOnStdOut by storedProperty(false) + @get:Attribute("show_console_on_std_err") + var isShowConsoleOnStdErr by storedProperty(false) + + @get:Property(surroundWithTag = false) + @get:XCollection + var logFiles by list() } open class LocatableRunConfigurationOptions : RunConfigurationOptions() { diff --git a/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConfigurationPanel.java b/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConfigurationPanel.java index 441061f05880..6bea522e4902 100644 --- a/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConfigurationPanel.java +++ b/platform/lang-impl/src/com/intellij/diagnostic/logging/LogConfigurationPanel.java @@ -1,17 +1,5 @@ /* - * Copyright 2000-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. */ package com.intellij.diagnostic.logging; @@ -93,7 +81,7 @@ public class LogConfigurationPanel extends Setti @Override public void run(AnActionButton button) { ArrayList newList = new ArrayList<>(myModel.getItems()); - LogFileOptions newOptions = new LogFileOptions("", "", true, true, false); + LogFileOptions newOptions = new LogFileOptions("", "", true); if (showEditorDialog(newOptions)) { newList.add(newOptions); myModel.setItems(newList); @@ -378,7 +366,7 @@ public class LogConfigurationPanel extends Setti if (predefinedLogFile != null) { predefinedLogFile.setEnabled(checked.booleanValue()); } - element.setEnable(checked.booleanValue()); + element.setEnabled(checked.booleanValue()); } } diff --git a/platform/projectModel-api/src/com/intellij/openapi/components/CollectionStoredProperty.kt b/platform/projectModel-api/src/com/intellij/openapi/components/CollectionStoredProperty.kt index bd23499428f6..4fae7357ab4a 100644 --- a/platform/projectModel-api/src/com/intellij/openapi/components/CollectionStoredProperty.kt +++ b/platform/projectModel-api/src/com/intellij/openapi/components/CollectionStoredProperty.kt @@ -13,7 +13,7 @@ import kotlin.reflect.KProperty internal class ListStoredProperty : StoredPropertyBase>() { override fun isEqualToDefault() = value.isEmpty() - private val value: MutableList = SmartList() + private val value: SmartList = SmartList() override operator fun getValue(thisRef: BaseState, property: KProperty<*>) = value @@ -43,6 +43,10 @@ internal class ListStoredProperty : StoredPropertyBase>() { @Suppress("UNCHECKED_CAST") return doSetValue(value, (other as ListStoredProperty).value) } + + override fun getModificationCount(): Long { + return value.modificationCount.toLong() + } } internal class MapStoredProperty(private val value: MutableMap = THashMap()) : StoredPropertyBase>() { diff --git a/platform/util/src/com/intellij/util/SmartList.java b/platform/util/src/com/intellij/util/SmartList.java index 628714c05ad5..125353c8c89e 100644 --- a/platform/util/src/com/intellij/util/SmartList.java +++ b/platform/util/src/com/intellij/util/SmartList.java @@ -1,24 +1,11 @@ /* - * Copyright 2000-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. */ package com.intellij.util; import com.intellij.util.containers.EmptyIterator; import com.intellij.util.containers.SingletonIteratorBase; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.TestOnly; import java.lang.reflect.Array; import java.util.*; @@ -243,8 +230,7 @@ public class SmartList extends AbstractList implements RandomAccess { } } - @TestOnly - int getModificationCount() { + public int getModificationCount() { return modCount; } diff --git a/platform/util/src/com/intellij/util/xmlb/Converter.java b/platform/util/src/com/intellij/util/xmlb/Converter.java index 645ceadec809..a91e7a51da63 100644 --- a/platform/util/src/com/intellij/util/xmlb/Converter.java +++ b/platform/util/src/com/intellij/util/xmlb/Converter.java @@ -1,17 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. */ package com.intellij.util.xmlb; @@ -23,5 +11,5 @@ public abstract class Converter { public abstract T fromString(@NotNull String value); @NotNull - public abstract String toString(@NotNull T t); + public abstract String toString(@NotNull T value); } \ No newline at end of file diff --git a/plugins/devkit/src/run/PluginRunConfiguration.java b/plugins/devkit/src/run/PluginRunConfiguration.java index 8b9ab346b561..ec142c5e1b58 100644 --- a/plugins/devkit/src/run/PluginRunConfiguration.java +++ b/plugins/devkit/src/run/PluginRunConfiguration.java @@ -74,7 +74,7 @@ public class PluginRunConfiguration extends RunConfigurationBase implements Modu if (ideaJdk != null) { final String sandboxHome = ((Sandbox)ideaJdk.getSdkAdditionalData()).getSandboxHome(); if (sandboxHome != null) { - return new LogFileOptions(IDEA_LOG, sandboxHome + "/system/log/" + IDEA_LOG, predefinedLogFile.isEnabled(), true, false); + return new LogFileOptions(IDEA_LOG, sandboxHome + "/system/log/" + IDEA_LOG, predefinedLogFile.isEnabled()); } } } diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunConfiguration.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunConfiguration.java index 0810818e3521..9c3ffe4c15cf 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunConfiguration.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/mvc/MvcRunConfiguration.java @@ -169,7 +169,6 @@ public abstract class MvcRunConfiguration extends ModuleBasedConfiguration