use BiPredicate from JDK instead of own PairProcessor

This commit is contained in:
Vladimir Krivosheev
2017-04-24 15:31:53 +02:00
parent 2828128499
commit 688a3afe2b
4 changed files with 43 additions and 16 deletions
@@ -38,7 +38,6 @@ import com.intellij.openapi.project.DumbAware
import com.intellij.openapi.ui.Messages
import com.intellij.openapi.util.io.FileUtilRt
import com.intellij.openapi.vfs.CharsetToolkit
import com.intellij.util.PairProcessor
import com.intellij.util.PlatformUtils
import com.intellij.util.ReflectionUtil
import com.intellij.util.containers.putValue
@@ -187,16 +186,16 @@ fun getExportableComponentsMap(onlyExisting: Boolean,
val fileToContent = THashMap<Path, String>()
ServiceManagerImpl.processAllImplementationClasses(ApplicationManager.getApplication() as ApplicationImpl, PairProcessor<Class<*>, PluginDescriptor> { aClass, pluginDescriptor ->
ServiceManagerImpl.processAllImplementationClasses(ApplicationManager.getApplication() as ApplicationImpl, { aClass, pluginDescriptor ->
val stateAnnotation = StoreUtil.getStateSpec(aClass)
@Suppress("DEPRECATION")
if (stateAnnotation == null || stateAnnotation.name.isNullOrEmpty() || ExportableComponent::class.java.isAssignableFrom(aClass)) {
return@PairProcessor true
return@processAllImplementationClasses true
}
val storage = stateAnnotation.storages.sortByDeprecated().firstOrNull() ?: return@PairProcessor true
val storage = stateAnnotation.storages.sortByDeprecated().firstOrNull() ?: return@processAllImplementationClasses true
if (!(storage.roamingType != RoamingType.DISABLED && storage.storageClass == StateStorage::class && !storage.path.isNullOrEmpty())) {
return@PairProcessor true
return@processAllImplementationClasses true
}
var additionalExportFile: Path? = null
@@ -220,7 +219,7 @@ fun getExportableComponentsMap(onlyExisting: Boolean,
if (computePresentableNames && onlyExisting && additionalExportFile == null && file.fileName.toString().endsWith(".xml")) {
val content = fileToContent.getOrPut(file) { file.readText() }
if (!content.contains("""<component name="${stateAnnotation.name}">""")) {
return@PairProcessor true
return@processAllImplementationClasses true
}
}
@@ -107,6 +107,34 @@ internal class DefaultProjectStoreTest {
val element = loadElement("""
<state>
<component name="ProjectLevelVcsManager" settingsEditedManually="false" />
<component name="masterDetails">
<states>
<state key="Copyright.UI">
<settings>
<last-edited>Foo</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>1.4</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</state>""")
removeWorkspaceComponentConfiguration(ProjectManager.getInstance().defaultProject, element)
assertThat(element.isEmpty()).isTrue()
@@ -7,7 +7,6 @@ import com.intellij.openapi.components.impl.ServiceManagerImpl
import com.intellij.openapi.components.impl.stores.StoreUtil
import com.intellij.openapi.extensions.PluginDescriptor
import com.intellij.testFramework.ProjectRule
import com.intellij.util.PairProcessor
import com.intellij.util.xmlb.XmlSerializerUtil
import org.jdom.Attribute
import org.jdom.Element
@@ -15,6 +14,7 @@ import org.junit.ClassRule
import org.junit.Test
import java.lang.reflect.ParameterizedType
import java.lang.reflect.Type
import java.util.function.BiPredicate
class DoNotStorePasswordTest {
companion object {
@@ -25,15 +25,15 @@ class DoNotStorePasswordTest {
@Test
fun printPasswordComponents() {
val processor = PairProcessor<Class<*>, PluginDescriptor> { aClass, pluginDescriptor ->
val processor = BiPredicate<Class<*>, PluginDescriptor?> { aClass, pluginDescriptor ->
val stateAnnotation = StoreUtil.getStateSpec(aClass)
if (stateAnnotation == null || stateAnnotation.name.isNullOrEmpty()) {
return@PairProcessor true
return@BiPredicate true
}
for (i in aClass.genericInterfaces) {
if (checkType(i)) {
return@PairProcessor true
return@BiPredicate true
}
}
@@ -52,11 +52,11 @@ class DoNotStorePasswordTest {
@Suppress("DEPRECATION")
for (c in app.getComponentInstancesOfType(PersistentStateComponent::class.java)) {
processor.process(c.javaClass, null)
processor.test(c.javaClass, null)
}
@Suppress("DEPRECATION")
for (c in (projectRule.project as ComponentManagerImpl).getComponentInstancesOfType(PersistentStateComponent::class.java)) {
processor.process(c.javaClass, null)
processor.test(c.javaClass, null)
}
}
@@ -29,7 +29,6 @@ import com.intellij.openapi.extensions.impl.ExtensionComponentAdapter;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.PairProcessor;
import com.intellij.util.PlatformUtils;
import com.intellij.util.io.storage.HeavyProcessLatch;
import com.intellij.util.pico.AssignableToComponentAdapter;
@@ -41,6 +40,7 @@ import org.picocontainer.defaults.InstanceComponentAdapter;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.function.BiPredicate;
public class ServiceManagerImpl implements Disposable {
private static final Logger LOG = Logger.getInstance(ServiceManagerImpl.class);
@@ -106,7 +106,7 @@ public class ServiceManagerImpl implements Disposable {
return Arrays.asList(extensions);
}
public static void processAllImplementationClasses(@NotNull ComponentManagerImpl componentManager, @NotNull PairProcessor<Class<?>, PluginDescriptor> processor) {
public static void processAllImplementationClasses(@NotNull ComponentManagerImpl componentManager, @NotNull BiPredicate<Class<?>, PluginDescriptor> processor) {
Collection adapters = componentManager.getPicoContainer().getComponentAdapters();
if (adapters.isEmpty()) {
return;
@@ -139,7 +139,7 @@ public class ServiceManagerImpl implements Disposable {
continue;
}
if (!processor.process(aClass, pluginDescriptor)) {
if (!processor.test(aClass, pluginDescriptor)) {
break;
}
}
@@ -155,7 +155,7 @@ public class ServiceManagerImpl implements Disposable {
continue;
}
processor.process(aClass, pluginId == null ? null : PluginManager.getPlugin(pluginId));
processor.test(aClass, pluginId == null ? null : PluginManager.getPlugin(pluginId));
}
}
}