/* * Copyright 2013-2016 consulo.io * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package consulo.compiler.server; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.application.ex.ApplicationEx; import com.intellij.openapi.compiler.CompilerMessageCategory; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.projectRoots.SdkTable; import com.intellij.openapi.projectRoots.SdkType; import com.intellij.openapi.projectRoots.impl.SdkImpl; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.ui.TestDialog; import com.intellij.openapi.util.io.FileUtil; import consulo.compiler.server.application.CompilerServerApplication; import consulo.compiler.server.rmi.CompilerClientInterface; import consulo.compiler.server.rmi.CompilerServerInterface; import consulo.compiler.server.rmi.impl.CompilerServerInterfaceImpl; import org.jetbrains.annotations.NotNull; import java.io.File; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; /** * @author VISTALL * @since 5:48/09.08.13 */ public class Main { private static final Logger LOGGER; static { Logger.setFactory(CompilerServerLoggerFactory.class); LOGGER = Logger.getInstance(Main.class); } public static void main(String[] args) throws Exception { File t = FileUtil.createTempDirectory("consulo", "data"); System.setProperty(PathManager.PROPERTY_CONFIG_PATH, t.getAbsolutePath() + "/config"); System.setProperty(PathManager.PROPERTY_SYSTEM_PATH, t.getAbsolutePath() + "/system"); System.setProperty(PathManager.PROPERTY_PLUGINS_PATH, "G:\\target_for_build\\distMain\\plugins"); System.setProperty(PathManager.PROPERTY_HOME_PATH, "G:\\target_for_build\\distMain"); System.setProperty("idea.filewatcher.disabled", "true"); LOGGER.info("Data dir: " + t.getAbsolutePath()); CompilerServerInterfaceImpl server = createServer(); ApplicationEx app = CompilerServerApplication.createApplication(); Messages.setTestDialog(new TestDialog() { @Override public int show(String message) { LOGGER.info(message); return 0; } }); app.load(PathManager.getOptionsPath()); setupSdk("JDK", "1.6", "I:\\Programs\\jdk6"); setupSdk("JDK", "1.7", "I:\\Programs\\jdk7"); setupSdk("Consulo Plugin SDK", "Consulo 1.SNAPSHOT", "G:\\target_for_build\\distMainn"); server.compile(new CompilerClientInterface() { @Override public void addMessage(@NotNull CompilerMessageCategory category, String message, String url, int lineNum, int columnNum) throws RemoteException { LOGGER.info(category + ": " + message + ". Url: " + url); } @Override public void compilationFinished(boolean aborted, int errors, int warnings) throws RemoteException { } @NotNull @Override public String getProjectDir() { return "G:\\target_for_build\\consulo"; } }); } private static void setupSdk(String sdkTypeName, String name, String home) { SdkType sdkType = null; for (SdkType temp : SdkType.EP_NAME.getExtensions()) { if (temp.getName().equals(sdkTypeName)) { sdkType = temp; break; } } assert sdkType != null; SdkImpl sdk = new SdkImpl(name, sdkType, home, sdkType.getVersionString(home)); sdkType.setupSdkPaths(sdk); SdkTable.getInstance().addSdk(sdk); } private static CompilerServerInterfaceImpl createServer() throws Exception { final Registry registry = LocateRegistry.createRegistry(5433); CompilerServerInterfaceImpl compilerSwapper = new CompilerServerInterfaceImpl(); registry.rebind(CompilerServerInterface.LOOKUP_ID, compilerSwapper); return compilerSwapper; } }