From 5e5110ac0bae18983e4e99515d25c8eed120295a Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 16 Mar 2012 14:15:50 +0100 Subject: [PATCH] IDEA-82751 "Add @NotNull Assertions" to be stored in compiler.xml --- .../compiler/CompilerConfigurationImpl.java | 23 +++++++++++++++++++ .../javaCompiler/BackendCompilerWrapper.java | 2 +- .../options/CompilerUIConfigurable.java | 6 ++--- .../compiler/CompilerConfiguration.java | 4 ++++ .../CompilerWorkspaceConfiguration.java | 1 - 5 files changed, 31 insertions(+), 5 deletions(-) diff --git a/java/compiler/impl/src/com/intellij/compiler/CompilerConfigurationImpl.java b/java/compiler/impl/src/com/intellij/compiler/CompilerConfigurationImpl.java index c5e69471e4d6..9c1f60ed5622 100644 --- a/java/compiler/impl/src/com/intellij/compiler/CompilerConfigurationImpl.java +++ b/java/compiler/impl/src/com/intellij/compiler/CompilerConfigurationImpl.java @@ -86,6 +86,7 @@ public class CompilerConfigurationImpl extends CompilerConfiguration implements private String myProcessorPath = ""; private final Map myProcessedModules = new HashMap(); private final Map myModuleNames = new HashMap(); + private boolean myAddNotNullAssertions = true; public CompilerConfigurationImpl(Project project, ModuleManager moduleManager) { @@ -300,6 +301,16 @@ public class CompilerConfigurationImpl extends CompilerConfiguration implements return isResourceFile(virtualFile.getName(), virtualFile.getParent()); } + @Override + public boolean isAddNotNullAssertions() { + return myAddNotNullAssertions; + } + + @Override + public void setAddNotNullAssertions(boolean enabled) { + myAddNotNullAssertions = enabled; + } + public boolean isAnnotationProcessorsEnabled() { return myEnableAnnotationProcessors; } @@ -509,10 +520,16 @@ public class CompilerConfigurationImpl extends CompilerConfiguration implements @NonNls private static final String WILDCARD_RESOURCE_PATTERNS = "wildcardResourcePatterns"; @NonNls private static final String ENTRY = "entry"; @NonNls private static final String NAME = "name"; + @NonNls private static final String ADD_NOTNULL_ASSERTIONS = "addNotNullAssertions"; public void readExternal(Element parentNode) throws InvalidDataException { DefaultJDOMExternalizer.readExternal(this, parentNode); + final Element notNullAssertions = parentNode.getChild(ADD_NOTNULL_ASSERTIONS); + if (notNullAssertions != null) { + myAddNotNullAssertions = Boolean.valueOf(notNullAssertions.getAttributeValue("enabled", "true")); + } + Element node = parentNode.getChild(EXCLUDE_FROM_COMPILE); if (node != null) { myExcludedEntriesConfiguration.readExternal(node); @@ -600,6 +617,12 @@ public class CompilerConfigurationImpl extends CompilerConfiguration implements public void writeExternal(Element parentNode) throws WriteExternalException { DefaultJDOMExternalizer.writeExternal(this, parentNode); + if (myAddNotNullAssertions != true) { + final Element notNullAssertions = new Element(ADD_NOTNULL_ASSERTIONS); + notNullAssertions.setAttribute("enabled", String.valueOf(myAddNotNullAssertions)); + parentNode.addContent(notNullAssertions); + } + if(myExcludedEntriesConfiguration.getExcludeEntryDescriptions().length > 0) { Element newChild = new Element(EXCLUDE_FROM_COMPILE); myExcludedEntriesConfiguration.writeExternal(newChild); diff --git a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java index 8199b2ad9e57..4851b0d2b548 100644 --- a/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java +++ b/java/compiler/impl/src/com/intellij/compiler/impl/javaCompiler/BackendCompilerWrapper.java @@ -835,7 +835,7 @@ public class BackendCompilerWrapper { private ClassParsingThread(final boolean isJdk16, String outputDir) { myIsJdk16 = isJdk16; myOutputDir = FileUtil.toSystemIndependentName(outputDir); - myAddNotNullAssertions = CompilerWorkspaceConfiguration.getInstance(myProject).ASSERT_NOT_NULL; + myAddNotNullAssertions = CompilerConfiguration.getInstance(myProject).isAddNotNullAssertions(); } private volatile boolean processing; diff --git a/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java b/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java index 11a36baa4e36..554e135ee6d4 100644 --- a/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java +++ b/java/compiler/impl/src/com/intellij/compiler/options/CompilerUIConfigurable.java @@ -73,7 +73,7 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura myCbCompileInBackground.setSelected(workspaceConfiguration.COMPILE_IN_BACKGROUND); myCbAutoShowFirstError.setSelected(workspaceConfiguration.AUTO_SHOW_ERRORS_IN_EDITOR); myCbClearOutputDirectory.setSelected(workspaceConfiguration.CLEAR_OUTPUT_DIRECTORY); - myCbAssertNotNull.setSelected(workspaceConfiguration.ASSERT_NOT_NULL); + myCbAssertNotNull.setSelected(configuration.isAddNotNullAssertions()); myCbUseCompileServer.setSelected(workspaceConfiguration.USE_COMPILE_SERVER); myCbMakeProjectOnSave.setSelected(workspaceConfiguration.MAKE_PROJECT_ON_SAVE); myCbMakeProjectOnSave.setEnabled(workspaceConfiguration.USE_COMPILE_SERVER); @@ -101,10 +101,10 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura workspaceConfiguration.COMPILE_IN_BACKGROUND = myCbCompileInBackground.isSelected(); workspaceConfiguration.AUTO_SHOW_ERRORS_IN_EDITOR = myCbAutoShowFirstError.isSelected(); workspaceConfiguration.CLEAR_OUTPUT_DIRECTORY = myCbClearOutputDirectory.isSelected(); - workspaceConfiguration.ASSERT_NOT_NULL = myCbAssertNotNull.isSelected(); workspaceConfiguration.USE_COMPILE_SERVER = myCbUseCompileServer.isSelected(); workspaceConfiguration.MAKE_PROJECT_ON_SAVE = myCbMakeProjectOnSave.isSelected(); + configuration.setAddNotNullAssertions(myCbAssertNotNull.isSelected()); configuration.removeResourceFilePatterns(); String extensionString = myResourcePatternsField.getText().trim(); applyResourcePatterns(extensionString, (CompilerConfigurationImpl)CompilerConfiguration.getInstance(myProject)); @@ -162,11 +162,11 @@ public class CompilerUIConfigurable implements SearchableConfigurable, Configura final CompilerWorkspaceConfiguration workspaceConfiguration = CompilerWorkspaceConfiguration.getInstance(myProject); isModified |= ComparingUtils.isModified(myCbCompileInBackground, workspaceConfiguration.COMPILE_IN_BACKGROUND); isModified |= ComparingUtils.isModified(myCbAutoShowFirstError, workspaceConfiguration.AUTO_SHOW_ERRORS_IN_EDITOR); - isModified |= ComparingUtils.isModified(myCbAssertNotNull, workspaceConfiguration.ASSERT_NOT_NULL); isModified |= ComparingUtils.isModified(myCbUseCompileServer, workspaceConfiguration.USE_COMPILE_SERVER); isModified |= ComparingUtils.isModified(myCbMakeProjectOnSave, workspaceConfiguration.MAKE_PROJECT_ON_SAVE); final CompilerConfigurationImpl compilerConfiguration = (CompilerConfigurationImpl)CompilerConfiguration.getInstance(myProject); + isModified |= ComparingUtils.isModified(myCbAssertNotNull, compilerConfiguration.isAddNotNullAssertions()); isModified |= ComparingUtils.isModified(myCbClearOutputDirectory, workspaceConfiguration.CLEAR_OUTPUT_DIRECTORY); isModified |= ComparingUtils.isModified(myResourcePatternsField, patternsToString(compilerConfiguration.getResourceFilePatterns())); diff --git a/java/compiler/openapi/src/com/intellij/compiler/CompilerConfiguration.java b/java/compiler/openapi/src/com/intellij/compiler/CompilerConfiguration.java index b86970f2c5ae..1068be4c8fc7 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/CompilerConfiguration.java +++ b/java/compiler/openapi/src/com/intellij/compiler/CompilerConfiguration.java @@ -38,6 +38,10 @@ public abstract class CompilerConfiguration { public abstract void addResourceFilePattern(String namePattern) throws MalformedPatternException; + public abstract boolean isAddNotNullAssertions(); + + public abstract void setAddNotNullAssertions(boolean enabled); + public abstract boolean isAnnotationProcessorsEnabled(); public abstract void setAnnotationProcessorsEnabled(boolean enableAnnotationProcessors); diff --git a/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java b/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java index 503af79d0e41..09bd07941970 100644 --- a/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java +++ b/java/compiler/openapi/src/com/intellij/compiler/CompilerWorkspaceConfiguration.java @@ -41,7 +41,6 @@ public class CompilerWorkspaceConfiguration implements PersistentStateComponent< public boolean AUTO_SHOW_ERRORS_IN_EDITOR = true; @Deprecated public boolean CLOSE_MESSAGE_VIEW_IF_SUCCESS = true; public boolean CLEAR_OUTPUT_DIRECTORY = true; - public boolean ASSERT_NOT_NULL = true; public boolean USE_COMPILE_SERVER = false; public boolean MAKE_PROJECT_ON_SAVE = false;