From 9ea76a4ce98b9f411732fee70832fba69e67ceca Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 2 Aug 2013 17:56:53 +0400 Subject: [PATCH] common code extracted --- .../components/ComponentSerializationUtil.java | 11 +++++++++++ .../src/com/intellij/facet/impl/FacetUtil.java | 3 +-- .../openapi/roots/impl/libraries/LibraryImpl.java | 4 +--- .../configuration/impl/RemoteServersManagerImpl.java | 9 ++------- .../xdebugger/impl/breakpoints/XBreakpointBase.java | 7 +------ .../impl/settings/XDebuggerSettingsManager.java | 9 +-------- 6 files changed, 17 insertions(+), 26 deletions(-) diff --git a/platform/core-impl/src/com/intellij/openapi/components/ComponentSerializationUtil.java b/platform/core-impl/src/com/intellij/openapi/components/ComponentSerializationUtil.java index edf85e09bc3b..33eee1a79178 100644 --- a/platform/core-impl/src/com/intellij/openapi/components/ComponentSerializationUtil.java +++ b/platform/core-impl/src/com/intellij/openapi/components/ComponentSerializationUtil.java @@ -16,6 +16,10 @@ package com.intellij.openapi.components; import com.intellij.util.ReflectionUtil; +import com.intellij.util.xmlb.XmlSerializer; +import org.jdom.Element; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.lang.reflect.TypeVariable; @@ -27,4 +31,11 @@ public class ComponentSerializationUtil { TypeVariable> variable = PersistentStateComponent.class.getTypeParameters()[0]; return ReflectionUtil.getRawType(ReflectionUtil.resolveVariableInHierarchy(variable, aClass)); } + + public static void loadComponentState(@NotNull PersistentStateComponent configuration, @Nullable Element element) { + if (element != null) { + Class stateClass = getStateClass(configuration.getClass()); + configuration.loadState(XmlSerializer.deserialize(element, stateClass)); + } + } } diff --git a/platform/lang-impl/src/com/intellij/facet/impl/FacetUtil.java b/platform/lang-impl/src/com/intellij/facet/impl/FacetUtil.java index 6a33a55ce3b2..b58cd5fe1da2 100644 --- a/platform/lang-impl/src/com/intellij/facet/impl/FacetUtil.java +++ b/platform/lang-impl/src/com/intellij/facet/impl/FacetUtil.java @@ -79,8 +79,7 @@ public class FacetUtil { throws InvalidDataException { if (config != null) { if (configuration instanceof PersistentStateComponent) { - Class stateClass = ComponentSerializationUtil.getStateClass(((PersistentStateComponent)configuration).getClass()); - ((PersistentStateComponent)configuration).loadState(XmlSerializer.deserialize(config, stateClass)); + ComponentSerializationUtil.loadComponentState((PersistentStateComponent)configuration, config); } else { configuration.readExternal(config); diff --git a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryImpl.java b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryImpl.java index 310932c81834..019c008592d0 100644 --- a/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryImpl.java +++ b/platform/projectModel-impl/src/com/intellij/openapi/roots/impl/libraries/LibraryImpl.java @@ -270,9 +270,7 @@ public class LibraryImpl extends TraceableDisposable implements LibraryEx.Modifi myProperties = myKind.createDefaultProperties(); final Element propertiesElement = element.getChild(PROPERTIES_ELEMENT); if (propertiesElement != null) { - final Class stateClass = ComponentSerializationUtil.getStateClass(myProperties.getClass()); - //noinspection unchecked - myProperties.loadState(XmlSerializer.deserialize(propertiesElement, stateClass)); + ComponentSerializationUtil.loadComponentState(myProperties, propertiesElement); } } diff --git a/platform/remote-servers/impl/src/com/intellij/remoteServer/configuration/impl/RemoteServersManagerImpl.java b/platform/remote-servers/impl/src/com/intellij/remoteServer/configuration/impl/RemoteServersManagerImpl.java index 3065bbc9f435..c2e5a1b64110 100644 --- a/platform/remote-servers/impl/src/com/intellij/remoteServer/configuration/impl/RemoteServersManagerImpl.java +++ b/platform/remote-servers/impl/src/com/intellij/remoteServer/configuration/impl/RemoteServersManagerImpl.java @@ -104,16 +104,11 @@ public class RemoteServersManagerImpl extends RemoteServersManager implements Pe private static RemoteServerImpl createConfiguration(ServerType type, RemoteServerState server) { C configuration = type.createDefaultConfiguration(); PersistentStateComponent serializer = configuration.getSerializer(); - loadConfiguration(server, serializer); + ComponentSerializationUtil.loadComponentState(serializer, server.myConfiguration); return new RemoteServerImpl(server.myName, type, configuration); } - private static void loadConfiguration(RemoteServerState server, PersistentStateComponent serializer) { - S deserialize = (S)XmlSerializer.deserialize(server.myConfiguration, ComponentSerializationUtil.getStateClass(serializer.getClass())); - serializer.loadState(deserialize); - } - - @Nullable + @Nullable private static ServerType findServerType(@NotNull String typeId) { for (ServerType serverType : ServerType.EP_NAME.getExtensions()) { if (serverType.getId().equals(typeId)) { diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java index e820785be91a..044682be27be 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/breakpoints/XBreakpointBase.java @@ -71,12 +71,7 @@ public class XBreakpointBase, P extends XBreakpointP myBreakpointManager = breakpointManager; myProperties = type.createProperties(); if (myProperties != null) { - //noinspection unchecked - Element element = myState.getPropertiesElement(); - if (element != null) { - //noinspection unchecked - myProperties.loadState(XmlSerializer.deserialize(element, ComponentSerializationUtil.getStateClass(myProperties.getClass()))); - } + ComponentSerializationUtil.loadComponentState(myProperties, myState.getPropertiesElement()); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsManager.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsManager.java index b30a4acd9601..5e7a17561c11 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsManager.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/settings/XDebuggerSettingsManager.java @@ -76,18 +76,11 @@ public class XDebuggerSettingsManager implements PersistentStateComponent settings = findSettings(settingsState.getId()); if (settings != null) { - loadState(settings, settingsState.getSettingsElement()); + ComponentSerializationUtil.loadComponentState(settings, settingsState.getSettingsElement()); } } } - private static void loadState(final XDebuggerSettings settings, final Element settingsElement) { - Class stateClass = ComponentSerializationUtil.getStateClass(settings.getClass()); - //noinspection unchecked - settings.loadState((T)XmlSerializer.deserialize(settingsElement, stateClass)); - } - - private XDebuggerSettings findSettings(String id) { initSettings(); return mySettingsById.get(id);