@Override public void patchParameters( @NotNull JavaParameters parameters, String originalOutputDir, @NotNull GwtFacet gwtFacet) { final ParametersList programParameters = parameters.getProgramParametersList(); programParameters.add("-server"); programParameters.add("com.google.appengine.tools.development.gwt.AppEngineLauncher"); final CloudSdkService sdkService = CloudSdkService.getInstance(); CloudSdkJavaInternals sdkInternals = CloudSdkJavaInternals.getInstance(); sdkInternals.patchJavaParametersForDevServer(parameters.getVMParametersList()); // actually these jars are added by AppEngine dev server automatically. But they need to be // added to classpath before gwt-dev.jar, because otherwise wrong jsp compiler version will be // used (see IDEA-63068) if (sdkInternals.getLibraries() != null) { for (File jar : ArrayUtil.mergeArrays(sdkInternals.getLibraries(), sdkInternals.getJspLibraries())) { parameters.getClassPath().addFirst(FileUtil.toSystemIndependentName(jar.getAbsolutePath())); } } if (sdkInternals.getToolsApiJarFile() != null) { parameters.getClassPath().add(sdkInternals.getToolsApiJarFile()); } } }
private void setupAppEngine(AppEngineStandardLibraryPanel libraryPanel, Library library) { CloudSdkService sdkService = mock(CloudSdkService.class); CloudSdkServiceManager sdkServiceManager = mock(CloudSdkServiceManager.class); when(sdkServiceManager.getCloudSdkService()).thenReturn(sdkService); CloudSdkJavaInternals mockSdkInternals = mock(CloudSdkJavaInternals.class); when(mockSdkInternals.getLibraries()).thenReturn(new File[] {}); CloudSdkJavaInternals.setInstance(mockSdkInternals); MavenRepositoryLibraryDownloader libraryDownloader = mock(MavenRepositoryLibraryDownloader.class); when(libraryDownloader.downloadLibrary( any(Module.class), any(AppEngineStandardMavenLibrary.class))) .thenReturn(library); MutablePicoContainer applicationContainer = (MutablePicoContainer) ApplicationManager.getApplication().getPicoContainer(); applicationContainer.unregisterComponent(CloudSdkService.class.getName()); applicationContainer.registerComponentInstance(CloudSdkService.class.getName(), sdkService); applicationContainer.unregisterComponent(MavenRepositoryLibraryDownloader.class.getName()); applicationContainer.registerComponentInstance( MavenRepositoryLibraryDownloader.class.getName(), libraryDownloader); FrameworkSupportInModuleConfigurable configurable = selectFramework(AppEngineStandardFrameworkType.ID); if (libraryPanel != null && configurable instanceof AppEngineSupportConfigurable) { ((AppEngineSupportConfigurable) configurable).setAppEngineStandardLibraryPanel(libraryPanel); } }