diff --git a/plugins/org.springframework.ide.eclipse.boot.dash.test/META-INF/MANIFEST.MF b/plugins/org.springframework.ide.eclipse.boot.dash.test/META-INF/MANIFEST.MF index 78a51fe5fe..bfe1f7bebf 100644 --- a/plugins/org.springframework.ide.eclipse.boot.dash.test/META-INF/MANIFEST.MF +++ b/plugins/org.springframework.ide.eclipse.boot.dash.test/META-INF/MANIFEST.MF @@ -40,7 +40,9 @@ Require-Bundle: org.junit, org.eclipse.ui.ide, org.springsource.ide.eclipse.commons.core, org.yaml.snakeyaml, - com.google.gson + com.google.gson, + org.springframework.tooling.cloudfoundry.manifest.ls, + org.springframework.tooling.ls.eclipse.commons Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Bundle-ActivationPolicy: lazy Import-Package: javax.ws.rs.client, diff --git a/plugins/org.springframework.ide.eclipse.boot.dash.test/src/org/springframework/ide/eclipse/boot/dash/test/DeploymentPropertiesDialogModelTests.java b/plugins/org.springframework.ide.eclipse.boot.dash.test/src/org/springframework/ide/eclipse/boot/dash/test/DeploymentPropertiesDialogModelTests.java index 4e0c547eaa..c9ca928cc5 100644 --- a/plugins/org.springframework.ide.eclipse.boot.dash.test/src/org/springframework/ide/eclipse/boot/dash/test/DeploymentPropertiesDialogModelTests.java +++ b/plugins/org.springframework.ide.eclipse.boot.dash.test/src/org/springframework/ide/eclipse/boot/dash/test/DeploymentPropertiesDialogModelTests.java @@ -21,10 +21,14 @@ import java.io.ByteArrayInputStream; import java.text.MessageFormat; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.NoSuchElementException; import java.util.UUID; +import java.util.stream.Collectors; import org.eclipse.core.filebuffers.FileBuffers; import org.eclipse.core.filebuffers.ITextFileBufferManager; @@ -77,6 +81,12 @@ import com.google.common.collect.ImmutableList; +import junit.framework.AssertionFailedError; + +import org.springframework.tooling.cloudfoundry.manifest.ls.CloudFoundryManifestLanguageServer; +import org.springframework.tooling.ls.eclipse.commons.preferences.LanguageServerConsolePreferenceConstants; + + /** * Tests for {@link DeploymentPropertiesDialogModel} * @@ -197,12 +207,34 @@ private void waitUntilFileDisconnedted(IFile file) throws Exception { private static void waitUntilFileConnected(IFile file) throws Exception { waitForJobsToComplete(); - for (LanguageServerWrapper wrapper : LanguageServiceAccessor.getLSWrappers(file, cap -> true)) { - ACondition.waitFor(file.toString() + " connected to LS", DISCONNECT_TIMEOUT, () -> assertTrue(wrapper.isConnectedTo(file.getLocation()))); - } + Collection wrappers = LanguageServiceAccessor.getLSWrappers(file, cap -> true); + LanguageServerWrapper wrapper = getCfLanguageServer(file, wrappers); + ACondition.waitFor(file.toString() + " connected to LS", DISCONNECT_TIMEOUT, () -> assertTrue(wrapper.isConnectedTo(file.getLocation()))); waitForJobsToComplete(); } + private static LanguageServerWrapper getCfLanguageServer(IFile file, Collection wrappers) throws Exception { + StringBuilder available = new StringBuilder(); + List found = new ArrayList<>(); + for (LanguageServerWrapper wrapper : wrappers) { + if ("org.eclipse.languageserver.languages.cloudfoundrymanifest".equals(wrapper.serverDefinition.id)) { + found.add(wrapper); + } + available.append(wrapper.serverDefinition.id+" "); + } + if (found.isEmpty()) { + throw new NoSuchElementException("No CF language server wrapper found in: [ "+available+"]"); + } else if (found.size()>1) { + throw new AssertionFailedError( + "Found more than one ls: "+ + found.stream() + .map(w -> w.serverDefinition.id) + .collect(Collectors.toList()) + ); + } + return found.get(0); + } + private void createDialogModel(IProject project, CFApplication deployedApp) throws Exception { model = new DeploymentPropertiesDialogModel(ui, createCloudData(), project, deployedApp); model.initFileModel();