mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-08 15:09:39 +07:00
[project model] mark FacetUtil.saveFacetConfiguration and FacetState.getConfiguration as @Nullable
...and add necessary checks. This fixes NullPointerException, which may happen if there is an InvalidFacetConfiguration without a configuration tag (reproduced in IntelliJConfigurationFilesFormatTest). GitOrigin-RevId: 804d3271e97c8415a22e130ffd4ddddf93e944df
This commit is contained in:
committed by
intellij-monorepo-bot
parent
1dc2ba82dc
commit
496511375f
@@ -28,7 +28,7 @@ class FacetTypeUnloadingTest : HeavyPlatformTestCase() {
|
||||
assertTrue(addedFacet.isDisposed)
|
||||
val invalidFacet = InvalidFacetManager.getInstance(myProject).invalidFacets.single()
|
||||
assertEquals("mock", invalidFacet.name)
|
||||
assertEquals("<configuration data=\"my data\" />", JDOMUtil.write(invalidFacet.configuration.facetState.configuration))
|
||||
assertEquals("<configuration data=\"my data\" />", JDOMUtil.write(invalidFacet.configuration.facetState.configuration!!))
|
||||
|
||||
registerFacetType(MockFacetType(), testRootDisposable)
|
||||
assertTrue(InvalidFacetManager.getInstance(myProject).invalidFacets.isEmpty())
|
||||
|
||||
@@ -30,9 +30,9 @@ interface ConfigFileItemSerializer {
|
||||
}
|
||||
}
|
||||
|
||||
fun deserializeConfigFiles(rootElement: Element): MutableList<ConfigFileItem> {
|
||||
fun deserializeConfigFiles(rootElement: Element?): MutableList<ConfigFileItem> {
|
||||
val configFiles = mutableListOf<ConfigFileItem>()
|
||||
val descriptorsElement = rootElement.getChild(DESCRIPTORS_ELEMENT)
|
||||
val descriptorsElement = rootElement?.getChild(DESCRIPTORS_ELEMENT)
|
||||
if (descriptorsElement != null) {
|
||||
val children: List<Element> = descriptorsElement.getChildren(ELEMENT_NAME)
|
||||
for (child in children) {
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.intellij.util.xmlb.annotations.Property;
|
||||
import com.intellij.util.xmlb.annotations.Tag;
|
||||
import com.intellij.util.xmlb.annotations.XCollection;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.serialization.SerializationConstants;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -37,7 +38,7 @@ public final class FacetState {
|
||||
}
|
||||
|
||||
@Tag(JpsFacetSerializer.CONFIGURATION_TAG)
|
||||
public Element getConfiguration() {
|
||||
public @Nullable Element getConfiguration() {
|
||||
return myConfiguration;
|
||||
}
|
||||
|
||||
|
||||
@@ -71,8 +71,7 @@ public class FacetUtil {
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static Element saveFacetConfiguration(@NotNull FacetConfiguration configuration) {
|
||||
public static @Nullable Element saveFacetConfiguration(@NotNull FacetConfiguration configuration) {
|
||||
if (configuration instanceof PersistentStateComponent) {
|
||||
Object state = ((PersistentStateComponent<?>)configuration).getState();
|
||||
if (state instanceof Element) {
|
||||
|
||||
@@ -87,7 +87,7 @@ class FacetManagerBridge(module: Module) : FacetManagerBase() {
|
||||
FacetUtil.loadFacetConfiguration(configuration, config)
|
||||
val name = state.name
|
||||
val facet: F = createFacet(module, type, name, configuration, underlyingFacet)
|
||||
if (facet is JDOMExternalizable) {
|
||||
if (facet is JDOMExternalizable && config != null) {
|
||||
//todo[nik] remove
|
||||
facet.readExternal(config)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user