Skip to content

Commit 2268382

Browse files
committed
Add update support for kotlin
1 parent 8534c0f commit 2268382

File tree

4 files changed

+33
-18
lines changed

4 files changed

+33
-18
lines changed

src/ServiceStackIDEA/src/main/java/net/servicestack/idea/AddServiceStackRefHandler.java

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public static void handleOk(String addressUrl, String qualifiedPackageName,
4141
Module module, StringBuilder errorMessage) {
4242
List<String> javaCodeLines = getDtoLines(addressUrl, qualifiedPackageName, fileName, errorMessage);
4343
if (javaCodeLines == null) return;
44-
defaultNativeTypesHandler = getDefaultNativeTypesHandler(module);
44+
defaultNativeTypesHandler = IDEAUtils.getDefaultNativeTypesHandler(module);
4545
boolean showDto = true;
4646
final MavenProjectsManager mavenProjectsManager = MavenProjectsManager.getInstance(module.getProject());
4747

@@ -243,15 +243,4 @@ public static String getDtoNameWithoutExtension(String name) {
243243
return name.substring(0, p);
244244
}
245245
}
246-
247-
public static INativeTypesHandler getDefaultNativeTypesHandler(Module module) {
248-
if(GradleBuildFileHelper.isGradleModule(module) && GradleBuildFileHelper.isUsingKotlin(module)) {
249-
return new KotlinNativeTypesHandler();
250-
}
251-
252-
if(IDEAPomFileHelper.isMavenProjectWithKotlin(module)) {
253-
return new KotlinNativeTypesHandler();
254-
}
255-
return new JavaNativeTypesHandler();
256-
}
257246
}

src/ServiceStackIDEA/src/main/java/net/servicestack/idea/IDEAUtils.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,21 @@ public static void closeFile(Module module, String filePath) {
6161
}
6262
FileEditorManager.getInstance(module.getProject()).closeFile(fileByUrl);
6363
}
64+
65+
public static INativeTypesHandler getDefaultNativeTypesHandler(Module module) {
66+
if(GradleBuildFileHelper.isGradleModule(module) && GradleBuildFileHelper.isUsingKotlin(module)) {
67+
return new KotlinNativeTypesHandler();
68+
}
69+
70+
if(IDEAPomFileHelper.isMavenProjectWithKotlin(module)) {
71+
return new KotlinNativeTypesHandler();
72+
}
73+
return new JavaNativeTypesHandler();
74+
}
75+
76+
public static INativeTypesHandler getNativeTypesHandler(Module module,String fileName) {
77+
if(fileName.endsWith(".kt")) return new KotlinNativeTypesHandler();
78+
if(fileName.endsWith(".java")) return new JavaNativeTypesHandler();
79+
return getDefaultNativeTypesHandler(module);
80+
}
6481
}

src/ServiceStackIDEA/src/main/java/net/servicestack/idea/UpdateServiceStackReferenceIntention.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.intellij.codeInsight.intention.impl.QuickEditAction;
44
import com.intellij.openapi.editor.Editor;
5+
import com.intellij.openapi.module.Module;
6+
import com.intellij.openapi.module.ModuleUtil;
57
import com.intellij.openapi.project.Project;
68
import com.intellij.openapi.util.Iconable;
79
import com.intellij.psi.PsiFile;
@@ -29,11 +31,13 @@ public String getFamilyName() {
2931
@Override
3032
public boolean isAvailable(@NotNull Project project, Editor editor, PsiFile psiFile) {
3133
try {
32-
if(psiFile == null || !(psiFile instanceof PsiJavaFile)) {
34+
if(psiFile == null) {
3335
return false;
3436
}
35-
PsiJavaFile classFile = (PsiJavaFile)psiFile;
36-
if(UpdateServiceStackUtils.containsOptionsHeader(classFile)) {
37+
if(!(psiFile instanceof PsiJavaFile || psiFile.getFileType().getDefaultExtension().equals("kt"))) {
38+
return false;
39+
}
40+
if(UpdateServiceStackUtils.containsOptionsHeader(psiFile)) {
3741
return true;
3842
}
3943
} catch (Exception e) {

src/ServiceStackIDEA/src/main/java/net/servicestack/idea/UpdateServiceStackUtils.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import com.intellij.notification.Notifications;
66
import com.intellij.openapi.editor.Document;
77
import com.intellij.openapi.fileEditor.FileDocumentManager;
8+
import com.intellij.openapi.module.Module;
9+
import com.intellij.openapi.module.ModuleUtil;
810
import com.intellij.openapi.util.TextRange;
911
import com.intellij.psi.PsiFile;
1012
import com.intellij.psi.PsiJavaFile;
@@ -63,11 +65,14 @@ public static void updateServiceStackReference(PsiFile psiFile) {
6365
return;
6466
}
6567

68+
Module module = ModuleUtil.findModuleForPsiElement(psiFile);
69+
INativeTypesHandler nativeTypesHandler = IDEAUtils.getNativeTypesHandler(module,psiFile.getName());
70+
6671
String existingPath = builder.getPath();
6772
if(existingPath == null || existingPath.equals("/")) {
68-
builder.setPath("/types/java");
73+
builder.setPath("/" + nativeTypesHandler.getRelativeTypesUrl());
6974
} else {
70-
builder.setPath(existingPath + "/types/java");
75+
builder.setPath(existingPath + "/" + nativeTypesHandler.getRelativeTypesUrl());
7176
}
7277

7378
Map<String,String> options = new HashMap<String,String>();
@@ -131,7 +136,7 @@ public static void updateServiceStackReference(PsiFile psiFile) {
131136
}
132137
}
133138

134-
public static boolean containsOptionsHeader(PsiJavaFile psiJavaFile) {
139+
public static boolean containsOptionsHeader(PsiFile psiJavaFile) {
135140
Document dtoDocument = FileDocumentManager.getInstance().getDocument(psiJavaFile.getVirtualFile());
136141
if(dtoDocument == null) {
137142
return false;

0 commit comments

Comments
 (0)