Javafx: Migration to JDK 9 (IDEA-157536)

This commit is contained in:
Pavel Dolgov
2016-10-07 17:35:35 +03:00
parent 3f05a2ffff
commit cf47b17b49
11 changed files with 114 additions and 5 deletions
@@ -37,7 +37,7 @@ import java.util.ArrayList;
/**
* @author ven
*/
class MigrationProcessor extends BaseRefactoringProcessor {
public class MigrationProcessor extends BaseRefactoringProcessor {
private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.migration.MigrationProcessor");
private final MigrationMap myMigrationMap;
private static final String REFACTORING_NAME = RefactoringBundle.message("migration.title");
@@ -103,7 +103,7 @@ class MigrationProcessor extends BaseRefactoringProcessor {
myPsiMigration.finish();
myPsiMigration = null;
}
return usagesVector.toArray(new MigrationUsageInfo[usagesVector.size()]);
return usagesVector.toArray(UsageInfo.EMPTY_ARRAY);
}
protected boolean preprocessUsages(@NotNull Ref<UsageInfo[]> refUsages) {
@@ -147,10 +147,10 @@ class MigrationProcessor extends BaseRefactoringProcessor {
return REFACTORING_NAME;
}
public static class MigrationUsageInfo extends UsageInfo {
public MigrationMapEntry mapEntry;
static class MigrationUsageInfo extends UsageInfo {
MigrationMapEntry mapEntry;
public MigrationUsageInfo(UsageInfo info, MigrationMapEntry mapEntry) {
MigrationUsageInfo(UsageInfo info, MigrationMapEntry mapEntry) {
super(info.getElement(), info.getRangeInElement().getStartOffset(), info.getRangeInElement().getEndOffset());
this.mapEntry = mapEntry;
}
@@ -0,0 +1,45 @@
package org.jetbrains.plugins.javaFX.fxml;
import com.intellij.openapi.application.PluginPathManager;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.refactoring.migration.MigrationMap;
import com.intellij.refactoring.migration.MigrationMapSet;
import com.intellij.refactoring.migration.MigrationProcessor;
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
/**
* @author Pavel.Dolgov
*/
public class JavaFxMigrationTest extends LightCodeInsightFixtureTestCase {
public void testImportClasses() throws Exception {
doTest();
}
public void testImportSkinPackage() throws Exception {
doTest();
}
public void testImportCssPackage() throws Exception {
doTest();
}
private void doTest() {
myFixture.configureByFile(getTestName(false) + ".java");
MigrationMap[] maps = new MigrationMapSet().getMaps();
MigrationMap migrationMap = ContainerUtil.find(maps, m -> "JavaFX (8 -> 9)".equals(m.getName()));
assertNotNull(migrationMap);
new MigrationProcessor(getProject(), migrationMap).run();
FileDocumentManager.getInstance().saveAllDocuments();
myFixture.checkResultByFile(getTestName(false) + "_after.java");
}
@NotNull
@Override
protected String getTestDataPath() {
return PluginPathManager.getPluginHomePath("javaFX") + "/testData/migration/";
}
}
@@ -64,6 +64,7 @@
<javaMainMethodProvider implementation="org.jetbrains.plugins.javaFX.JavaFxMainMethodRunConfigurationProvider"/>
<deadCode implementation="org.jetbrains.plugins.javaFX.JavaFxEntryPoint"/>
<projectSdkSetupValidator implementation="org.jetbrains.plugins.javaFX.JavaFxProjectSdkSetupValidator" order="after javaSdk"/>
<predefinedMigrationMapProvider implementation="org.jetbrains.plugins.javaFX.refactoring.migration.JavaFx9Migration"/>
</extensions>
<actions>
@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<migrationMap>
<name value="JavaFX (8 -&gt; 9)"/>
<description value="Fix imports of JavaFX API classes according to JEP 253. Note that a few classes are no longer public."/>
<entry oldName="com.sun.javafx.scene.control.skin" newName="javafx.scene.control.skin" type="package"/>
<entry oldName="com.sun.javafx.css" newName="javafx.css" type="package"/>
</migrationMap>
@@ -0,0 +1,17 @@
package org.jetbrains.plugins.javaFX.refactoring.migration;
import com.intellij.refactoring.migration.PredefinedMigrationProvider;
import org.jetbrains.annotations.NotNull;
import java.net.URL;
/**
* @author Pavel.Dolgov
*/
public class JavaFx9Migration implements PredefinedMigrationProvider {
@NotNull
@Override
public URL getMigrationMap() {
return JavaFx9Migration.class.getResource("JavaFx8__9.xml");
}
}
@@ -0,0 +1,7 @@
import com.sun.javafx.css.CompoundSelector;
import com.sun.javafx.scene.control.skin.AccordionSkin;
class ImportClasses {
CompoundSelector compoundSelector;
AccordionSkin accordionSkin;
}
@@ -0,0 +1,7 @@
import javafx.css.CompoundSelector;
import javafx.scene.control.skin.AccordionSkin;
class ImportClasses {
CompoundSelector compoundSelector;
AccordionSkin accordionSkin;
}
@@ -0,0 +1,6 @@
import com.sun.javafx.css.*;
class ImportSkinPackage {
CompoundSelector compoundSelector;
SimpleSelector simpleSelector;
}
@@ -0,0 +1,6 @@
import javafx.css.*;
class ImportSkinPackage {
CompoundSelector compoundSelector;
SimpleSelector simpleSelector;
}
@@ -0,0 +1,6 @@
import com.sun.javafx.scene.control.skin.*;
class ImportSkinPackage {
ButtonBarSkin buttonBarSkin;
ChoiceBoxSkin choiceBoxSkin;
}
@@ -0,0 +1,6 @@
import javafx.scene.control.skin.*;
class ImportSkinPackage {
ButtonBarSkin buttonBarSkin;
ChoiceBoxSkin choiceBoxSkin;
}