mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
XML-RPC server support
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -4,6 +4,10 @@
|
||||
<interface-class>com.intellij.openapi.application.ApplicationInfo</interface-class>
|
||||
<implementation-class>com.intellij.openapi.application.impl.ApplicationInfoImpl</implementation-class>
|
||||
</component>
|
||||
<component>
|
||||
<interface-class>com.intellij.ide.XmlRpcServer</interface-class>
|
||||
<implementation-class>com.intellij.ide.XmlRpcServerImpl</implementation-class>
|
||||
</component>
|
||||
<component>
|
||||
<interface-class>com.intellij.ide.util.PropertiesComponent</interface-class>
|
||||
<implementation-class>com.intellij.ide.util.PropertiesComponentImpl</implementation-class>
|
||||
@@ -130,7 +134,10 @@
|
||||
<component>
|
||||
<interface-class>com.intellij.formatting.FormatterEx</interface-class>
|
||||
<implementation-class>com.intellij.formatting.FormatterImpl</implementation-class>
|
||||
</component>
|
||||
</component>
|
||||
<component>
|
||||
<implementation-class>com.intellij.ide.OpenFileXmlRpcHandler</implementation-class>
|
||||
</component>
|
||||
</application-components>
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
* Copyright (c) 2005 JetBrains s.r.o. All Rights Reserved.
|
||||
*/
|
||||
package com.intellij.ide;
|
||||
|
||||
import com.intellij.openapi.application.Application;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.components.ApplicationComponent;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.openapi.fileEditor.ex.FileEditorProviderManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectManager;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* @author mike
|
||||
*/
|
||||
public class OpenFileXmlRpcHandler implements ApplicationComponent {
|
||||
private static final String HANDLER_NAME = "openFile";
|
||||
private final XmlRpcServer myXmlRpcServer;
|
||||
|
||||
public OpenFileXmlRpcHandler(final XmlRpcServer xmlRpcServer) {
|
||||
myXmlRpcServer = xmlRpcServer;
|
||||
}
|
||||
|
||||
@NonNls
|
||||
public String getComponentName() {
|
||||
return "OpenFileXmlRpcHandler";
|
||||
}
|
||||
|
||||
public void initComponent() {
|
||||
myXmlRpcServer.addHandler(HANDLER_NAME, new OpenFileHandler());
|
||||
}
|
||||
|
||||
public void disposeComponent() {
|
||||
myXmlRpcServer.removeHandler(HANDLER_NAME);
|
||||
}
|
||||
|
||||
public static class OpenFileHandler {
|
||||
@SuppressWarnings({"MethodMayBeStatic"})
|
||||
public void open(final String absolutePath) {
|
||||
final Application application = ApplicationManager.getApplication();
|
||||
|
||||
application.invokeLater(new Runnable() {
|
||||
public void run() {
|
||||
final Project[] openProjects = ProjectManager.getInstance().getOpenProjects();
|
||||
if (openProjects.length == 0) return;
|
||||
Project project = openProjects[0];
|
||||
|
||||
String correctPath = absolutePath.replace(File.separatorChar, '/');
|
||||
final VirtualFile[] virtualFiles = new VirtualFile[1];
|
||||
final String correctPath1 = correctPath;
|
||||
application.runWriteAction(new Runnable() {
|
||||
public void run() {
|
||||
virtualFiles[0] = LocalFileSystem.getInstance().refreshAndFindFileByPath(correctPath1);
|
||||
}
|
||||
});
|
||||
if (virtualFiles[0] == null) return;
|
||||
|
||||
FileEditorProviderManager editorProviderManager = FileEditorProviderManager.getInstance();
|
||||
if (editorProviderManager.getProviders(project, virtualFiles[0]).length == 0) return;
|
||||
OpenFileDescriptor descriptor = new OpenFileDescriptor(project, virtualFiles[0]);
|
||||
FileEditorManager.getInstance(project).openTextEditor(descriptor, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
/*
|
||||
* Copyright (c) 2005 JetBrains s.r.o. All Rights Reserved.
|
||||
*/
|
||||
package com.intellij.ide;
|
||||
|
||||
/**
|
||||
* @author mike
|
||||
*/
|
||||
public interface XmlRpcServer {
|
||||
void addHandler (String name, Object handler);
|
||||
void removeHandler (String name);
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (c) 2005 JetBrains s.r.o. All Rights Reserved.
|
||||
*/
|
||||
package com.intellij.ide;
|
||||
|
||||
import com.intellij.openapi.components.ApplicationComponent;
|
||||
import org.apache.xmlrpc.WebServer;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
/**
|
||||
* @author mike
|
||||
*/
|
||||
public class XmlRpcServerImpl implements XmlRpcServer, ApplicationComponent {
|
||||
public static final int PORT_NUMBER = 63342;
|
||||
private WebServer myWebServer;
|
||||
|
||||
@NonNls
|
||||
public String getComponentName() {
|
||||
return "XmlRpcServer";
|
||||
}
|
||||
|
||||
public void initComponent() {
|
||||
myWebServer = new WebServer(PORT_NUMBER);
|
||||
myWebServer.start();
|
||||
}
|
||||
|
||||
public void disposeComponent() {
|
||||
myWebServer.shutdown();
|
||||
}
|
||||
|
||||
public void addHandler(String name, Object handler) {
|
||||
myWebServer.addHandler(name, handler);
|
||||
}
|
||||
|
||||
public void removeHandler(String name) {
|
||||
myWebServer.removeHandler(name);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user