This commit is contained in:
BoykoAlex
2022-01-12 18:29:57 -05:00
22 changed files with 1405 additions and 105 deletions

View File

@@ -259,12 +259,12 @@ resources:
username: ((docker_hub_username))
password: ((docker_hub_password))
repository: springci/sts4-build-env
- name: theia-docker-image
type: docker-image
source:
username: ((docker_hub_username))
password: ((docker_hub_password))
repository: springci/sts4-theia-snapshot
# - name: theia-docker-image
# type: docker-image
# source:
# username: ((docker_hub_username))
# password: ((docker_hub_password))
# repository: springci/sts4-theia-snapshot
- name: maven-cache
type: s3
source:
@@ -401,40 +401,40 @@ jobs:
params:
rebase: true
repository: sts4-wiki-out
- name: build-theia-docker-snapshot-image
serial: true
on_failure:
put: slack-notification
params:
text: |
Concourse ${BUILD_PIPELINE_NAME}/${BUILD_JOB_NAME}/${BUILD_NAME} has failed!
https://ci.spring.io/teams/tools/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME}
plan:
- in_parallel:
- get: s3-concourse-vsix-snapshot
trigger: true
passed:
- build-consourse-vsix-snapshot
- get: s3-spring-boot-vsix-snapshot
trigger: true
passed:
- build-spring-boot-vsix-snapshot
- get: s3-bosh-vsix-snapshot
trigger: true
passed:
- build-bosh-vsix-snapshot
- get: s3-manifest-yaml-vsix-snapshot
trigger: true
passed:
- build-manifest-yaml-vsix-snapshot
- get: sts4
- task: prepare-theia-docker-image
file: sts4/concourse/tasks/prepare-theia-docker-image.yml
- put: theia-docker-image
params:
build: output
get_params:
skip_download: true
# - name: build-theia-docker-snapshot-image
# serial: true
# on_failure:
# put: slack-notification
# params:
# text: |
# Concourse ${BUILD_PIPELINE_NAME}/${BUILD_JOB_NAME}/${BUILD_NAME} has failed!
# https://ci.spring.io/teams/tools/pipelines/${BUILD_PIPELINE_NAME}/jobs/${BUILD_JOB_NAME}/builds/${BUILD_NAME}
# plan:
# - in_parallel:
# - get: s3-concourse-vsix-snapshot
# trigger: true
# passed:
# - build-consourse-vsix-snapshot
# - get: s3-spring-boot-vsix-snapshot
# trigger: true
# passed:
# - build-spring-boot-vsix-snapshot
# - get: s3-bosh-vsix-snapshot
# trigger: true
# passed:
# - build-bosh-vsix-snapshot
# - get: s3-manifest-yaml-vsix-snapshot
# trigger: true
# passed:
# - build-manifest-yaml-vsix-snapshot
# - get: sts4
# - task: prepare-theia-docker-image
# file: sts4/concourse/tasks/prepare-theia-docker-image.yml
# - put: theia-docker-image
# params:
# build: output
# get_params:
# skip_download: true
- name: build-docker-image
serial: true
plan:
@@ -1025,13 +1025,13 @@ groups:
- bump-version-patch
- bump-version-minor
- bump-version-major
- name: theia-snapshots
jobs:
- build-theia-docker-snapshot-image
- build-consourse-vsix-snapshot
- build-manifest-yaml-vsix-snapshot
- build-spring-boot-vsix-snapshot
- build-bosh-vsix-snapshot
# - name: theia-snapshots
# jobs:
# - build-theia-docker-snapshot-image
# - build-consourse-vsix-snapshot
# - build-manifest-yaml-vsix-snapshot
# - build-spring-boot-vsix-snapshot
# - build-bosh-vsix-snapshot
- name: setup
jobs:
- build-mvn-cache

View File

@@ -0,0 +1,184 @@
<?xml version="1.0" encoding="UTF-8"?>
<site pack200="true">
<description url="https://spring.io/tools">
Spring Tool Suite 4
</description>
<category-def name="Spring Tools" label="Spring Tools"/>
<category-def name="Spring Tools - Developer Resources" label="Spring Tools - Developer Resources"/>
<!-- STS4 branding and custom features -->
<feature
id="org.springframework.boot.ide.main.feature" version="0.0.0">
<category name="Spring Tools" />
</feature>
<feature
id="org.springframework.boot.ide.main.feature.source" version="0.0.0">
<category name="Spring Tools - Developer Resources" />
</feature>
<feature id="org.springframework.boot.ide.branding.feature" version="0.0.0" />
<feature
id="org.springframework.boot.ide.branding.feature.source" version="0.0.0">
</feature>
<feature
id="org.springframework.ide.eclipse.boot.dash.feature" version="0.0.0">
<category name="Spring Tools" />
</feature>
<feature
id="org.springframework.ide.eclipse.boot.dash.feature.source" version="0.0.0">
<category name="Spring Tools - Developer Resources" />
</feature>
<feature
id="org.springframework.ide.eclipse.xml.namespaces.feature" version="0.0.0">
<category name="Spring Tools" />
</feature>
<feature
id="org.springframework.ide.eclipse.xml.namespaces.feature.source" version="0.0.0">
<category name="Spring Tools - Developer Resources" />
</feature>
<feature
id="org.springframework.tooling.cloudfoundry.manifest.ls.feature" version="0.0.0">
<category name="Spring Tools" />
</feature>
<feature
id="org.springframework.tooling.cloudfoundry.manifest.ls.feature.source" version="0.0.0">
<category name="Spring Tools - Developer Resources" />
</feature>
<feature
id="org.springframework.tooling.boot.ls.feature" version="0.0.0">
<category name="Spring Tools" />
</feature>
<feature
id="org.springframework.tooling.boot.ls.feature.source" version="0.0.0">
<category name="Spring Tools - Developer Resources" />
</feature>
<feature
id="org.springframework.tooling.bosh.ls.feature" version="0.0.0">
<category name="Spring Tools" />
</feature>
<feature
id="org.springframework.tooling.bosh.ls.feature.source" version="0.0.0">
<category name="Spring Tools - Developer Resources" />
</feature>
<feature
id="org.springframework.tooling.concourse.ls.feature" version="0.0.0">
<category name="Spring Tools" />
</feature>
<feature
id="org.springframework.tooling.concourse.ls.feature.source" version="0.0.0">
<category name="Spring Tools - Developer Resources" />
</feature>
<!--
<feature
id="org.springframework.ide.eclipse.xterm.feature" version="0.0.0">
<category name="Spring Tools" />
</feature>
<feature
id="org.springframework.ide.eclipse.xterm.feature.source" version="0.0.0">
<category name="Spring Tools - Developer Resources" />
</feature>
<feature id="com.make.chromium.cef.feature"/>
--> <feature id="org.eclipse.wildwebdeveloper.embedder.node.feature"/>
<bundle id="org.springframework.tooling.ls.eclipse.commons" />
<bundle id="org.springframework.tooling.ls.eclipse.commons.source" />
<bundle id="org.springsource.ide.eclipse.commons.boot.ls" />
<bundle id="org.springsource.ide.eclipse.commons.boot.ls.source"/>
<bundle id="org.springframework.tooling.jdt.ls.commons"/>
<bundle id="org.springframework.tooling.jdt.ls.commons.source"/>
<bundle id="org.springframework.tooling.ls.eclipse.gotosymbol"/>
<bundle id="org.springframework.tooling.ls.eclipse.gotosymbol.source"/>
<bundle id="org.springsource.ide.eclipse.commons.core"/>
<bundle id="org.springsource.ide.eclipse.commons.core.source"/>
<bundle id="org.springsource.ide.eclipse.commons.ui"/>
<bundle id="org.springsource.ide.eclipse.commons.ui.source"/>
<bundle id="org.springsource.ide.eclipse.commons.frameworks.core"/>
<bundle id="org.springsource.ide.eclipse.commons.frameworks.core.source"/>
<bundle id="org.springsource.ide.eclipse.commons.frameworks.ui"/>
<bundle id="org.springsource.ide.eclipse.commons.frameworks.ui.source"/>
<bundle id="org.springsource.ide.eclipse.commons.livexp"/>
<bundle id="org.springsource.ide.eclipse.commons.livexp.source"/>
<bundle id="org.springsource.ide.eclipse.commons.tests.util"/>
<bundle id="org.springsource.ide.eclipse.commons.tests.util.source"/>
<bundle id="io.projectreactor.reactor-core"/>
<bundle id="io.projectreactor.reactor-core.source"/>
<bundle id="org.reactivestreams.reactive-streams"/>
<bundle id="org.reactivestreams.reactive-streams.source"/>
<feature id="org.eclipse.mylyn.wikitext_feature"/>
<feature id="org.eclipse.tm4e.feature"/>
<bundle id="javassist"/>
<bundle id="javassist.source"/>
<bundle id="javax.activation"/>
<bundle id="javax.activation.source"/>
<bundle id="javax.annotation"/>
<bundle id="javax.annotation.source"/>
<bundle id="javax.ws.rs"/>
<bundle id="javax.xml.bind"/>
<bundle id="javax.xml.bind.source"/>
<bundle id="javax.xml.stream"/>
<bundle id="org.aopalliance"/>
<bundle id="org.apache.log4j"/>
<bundle id="org.dadacoalition.yedit"/>
<bundle id="org.yaml.snakeyaml"/>
<bundle id="org.eclipse.lsp4e"/>
<bundle id="org.eclipse.lsp4e.jdt"/>
<bundle id="org.eclipse.lsp4j"/>
<bundle id="org.eclipse.lsp4j.jsonrpc"/>
<bundle id="org.eclipse.xtext.xbase.lib"/>
<bundle id="org.eclipse.zest.core"/>
<bundle id="org.eclipse.zest.layouts"/>
<bundle id="com.google.gson"/>
<bundle id="org.jcodings"/>
<bundle id="org.joni"/>
<bundle id="org.json"/>
<bundle id="org.apache.commons.lang3"/>
<bundle id="org.apache.commons.collections"/>
<bundle id="org.bouncycastle.bcpg"/>
<bundle id="org.bouncycastle.bcpg.source"/>
<bundle id="org.bouncycastle.bcpkix"/>
<bundle id="org.bouncycastle.bcpkix.source"/>
<bundle id="org.bouncycastle.bcprov"/>
<bundle id="org.bouncycastle.bcprov.source"/>
<bundle id="com.hierynomus.sshj"/>
<bundle id="com.hierynomus.sshj.source"/>
<bundle id="com.jcraft.jzlib"/>
<bundle id="com.jcraft.jzlib.source"/>
<bundle id="com.fasterxml.jackson.core.jackson-annotations"/>
<bundle id="com.fasterxml.jackson.core.jackson-core"/>
<bundle id="com.fasterxml.jackson.core.jackson-databind"/>
<bundle id="net.i2p.crypto.eddsa"/>
<bundle id="net.i2p.crypto.eddsa.source"/>
<!-- additional test bundles, required for other tests that might reuse this, e.g. from STS3 -->
<bundle id="org.springframework.ide.eclipse.boot.dash.test"/>
<bundle id="org.springframework.ide.eclipse.boot.dash.test.source"/>
<bundle id="org.springframework.ide.eclipse.boot.launch.test"/>
<bundle id="org.springframework.ide.eclipse.boot.launch.test.source"/>
<bundle id="org.springframework.ide.eclipse.boot.refactoring.test"/>
<bundle id="org.springframework.ide.eclipse.boot.refactoring.test.source"/>
<bundle id="org.springframework.ide.eclipse.boot.test"/>
<bundle id="org.springframework.ide.eclipse.boot.test.source"/>
<bundle id="org.springframework.ide.eclipse.maven.pom.tests"/>
<bundle id="org.springframework.ide.eclipse.maven.pom.tests.source"/>
</site>

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.debugger</key>
<true/>
</dict>
</plist>

View File

@@ -0,0 +1,46 @@
#!/usr/bin/env bash
DMG=$1
NOTARIZE_SERVICE_URL=$2
echo "Notarize DMG"
echo ${DMG}
RESPONSE=\
$(curl -s -X POST \
-F file=@${DMG} \
-F 'options={"primaryBundleId": "SpringTools4", "staple": true};type=application/json' \
${NOTARIZE_SERVICE_URL}/macos-notarization-service/notarize)
echo "Notarization request submitted"
echo ${RESPONSE}
UUID=$(echo ${RESPONSE} | jq -r '.uuid')
STATUS=$(echo ${RESPONSE} | jq -r '.notarizationStatus.status')
echo "Status after submitting"
echo ${STATUS}
while [[ ${STATUS} == 'IN_PROGRESS' ]]; do
sleep 60
RESPONSE=$(curl -s ${NOTARIZE_SERVICE_URL}/macos-notarization-service/${UUID}/status)
STATUS=$(echo ${RESPONSE} | jq -r '.notarizationStatus.status')
echo "Waiting for status to change"
echo ${RESPONSE}
echo ${STATUS}
done
echo "Status is not in progress anymore"
echo ${RESPONSE}
echo ${STATUS}
if [[ ${STATUS} != 'COMPLETE' ]]; then
echo "Notarization failed: ${RESPONSE}"
exit 1
fi
mv "${DMG}" "${DMG}-unnotarized"
curl -o ${DMG} -J ${NOTARIZE_SERVICE_URL}/macos-notarization-service/${UUID}/download

View File

@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8"?>
<?pde version="3.5"?>
<product name="Spring Tool Suite 4" id="org.springframework.boot.ide.branding.sts4" uid="org.springframework.boot.ide.branding.sts4" application="org.eclipse.ui.ide.workbench" version="4.13.1.qualifier" useFeatures="true" includeLaunchers="true">
<configIni use="default">
</configIni>
<launcherArgs>
<programArgs>-product org.springframework.boot.ide.branding.sts4
--launcher.defaultAction openFile
</programArgs>
<vmArgs>-Dosgi.requiredJavaVersion=11
-Dosgi.dataAreaRequiresExplicitInit=true
-Xms256m
-Xmx2048m
--illegal-access=permit
--add-modules=ALL-SYSTEM
</vmArgs>
<vmArgsLin>
</vmArgsLin>
<vmArgsMac>-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts -Xdock:icon=../Resources/sts4.icns
</vmArgsMac>
<vmArgsWin>
</vmArgsWin>
</launcherArgs>
<windowImages i16="/org.springframework.boot.ide.branding/sts4-16.png" i32="/org.springframework.boot.ide.branding/sts4-32.png" i48="/orgorg.springframework.boot.ide.branding/sts4-48.png" i64="/org.springframework.boot.ide.branding/sts4-64.png" i128="/org.springframework.boot.ide.branding/sts4-128.png"/>
<splash
location="org.springframework.boot.ide.branding"
startupProgressRect="0,225,455,15"
startupMessageRect="7,220,441,20"
startupForegroundColor="c1d72e" />
<launcher name="SpringToolSuite4">
<macosx icon="../org.springframework.boot.ide.branding/sts4.icns"/>
<solaris/>
<win useIco="true">
<ico path="../org.springframework.boot.ide.branding/sts4.ico"/>
<bmp/>
</win>
<linux icon="../org.springframework.boot.ide.branding/sts4.xpm"/>
</launcher>
<plugins>
</plugins>
<features>
<feature id="org.eclipse.platform"/>
<feature id="org.eclipse.pde" installMode="root"/>
<feature id="org.eclipse.buildship" installMode="root"/>
<feature id="org.eclipse.egit" installMode="root"/>
<feature id="org.eclipse.egit.gitflow.feature" installMode="root"/>
<feature id="org.eclipse.equinox.p2.user.ui" installMode="root"/>
<feature id="org.eclipse.help" installMode="root"/>
<feature id="org.eclipse.jdt" installMode="root"/>
<feature id="org.eclipse.jgit" installMode="root"/>
<feature id="org.eclipse.jgit.lfs" installMode="root"/>
<feature id="org.eclipse.mylyn.wikitext.editors_feature" installMode="root"/>
<feature id="org.eclipse.m2e.feature" installMode="root"/>
<feature id="org.eclipse.m2e.lemminx.feature" installMode="root"/>
<feature id="org.eclipse.m2e.logback.feature" installMode="root"/>
<feature id="org.eclipse.m2e.wtp.feature" installMode="root"/>
<!-- <feature id="org.eclipse.m2e.wtp.jaxrs.feature" installMode="root"/> -->
<!-- <feature id="org.eclipse.m2e.wtp.jsf.feature" installMode="root"/> -->
<feature id="org.jboss.tools.maven.apt.feature" installMode="root"/>
<!-- <feature id="org.eclipse.wst.web_ui.feature" installMode="root"/> -->
<!-- <feature id="org.eclipse.wst.xml_ui.feature" installMode="root"/> -->
<feature id="org.eclipse.wst.server_ui.feature" installMode="root"/>
<feature id="org.eclipse.wst.server_adapters.feature" installMode="root"/>
<!-- <feature id="org.eclipse.wst.json_ui.feature" installMode="root"/> -->
<!-- <feature id="org.eclipse.wst.jsdt.feature" installMode="root"/> -->
<!-- <feature id="org.eclipse.wst.jsdt.chromium.debug.feature" installMode="root"/> -->
<feature id="org.eclipse.jst.server_adapters.ext.feature" installMode="root"/>
<feature id="org.eclipse.jst.server_adapters.feature" installMode="root"/>
<feature id="org.eclipse.wildwebdeveloper.feature" installMode="root"/>
<feature id="org.eclipse.wildwebdeveloper.xml.feature" installMode="root"/>
<feature id="org.eclipse.tm.terminal.feature" installMode="root"/>
<!-- <feature id="org.eclipse.rse" installMode="root"/> -->
<feature id="org.eclipse.tips.feature" installMode="root"/>
<feature id="org.eclipse.epp.mpc" installMode="root"/>
<feature id="org.sonatype.m2e.buildhelper.feature" installMode="root"/>
<feature id="org.sonatype.m2e.mavenarchiver.feature" installMode="root"/>
<!-- <feature id="org.sonatype.m2e.egit.feature" installMode="root"/> -->
<feature id="org.jboss.tools.m2e.wro4j.feature" installMode="root"/>
<feature id="com.ianbrandt.tools.m2e.mdp.feature" installMode="root"/>
<feature id="m2e.chromatic.feature" installMode="root"/>
<feature id="net.mihai-nita.ansicon" installMode="root"/>
<feature id="org.eclipse.linuxtools.docker.feature" installMode="root"/>
<feature id="org.eclipse.linuxtools.jdt.docker.launcher.feature" installMode="root"/>
<feature id="org.springframework.ide.eclipse.boot.dash.feature" installMode="root"/>
<feature id="org.springframework.boot.ide.branding.feature"/>
<feature id="org.springframework.boot.ide.main.feature" installMode="root"/>
<feature id="org.springframework.ide.eclipse.xml.namespaces.feature" installMode="root"/>
<feature id="org.springframework.tooling.boot.ls.feature" installMode="root"/>
<feature id="org.springframework.tooling.cloudfoundry.manifest.ls.feature" installMode="root"/>
<feature id="org.springframework.tooling.bosh.ls.feature" installMode="root"/>
<feature id="org.springframework.tooling.concourse.ls.feature" installMode="root"/>
<!-- <feature id="org.eclipse.justj.openjdk.hotspot.jre.full" installMode="root"/> -->
<!-- <feature id="com.make.chromium.cef.feature" installMode="root"/> -->
</features>
<configurations>
<property name="eclipse.buildId" value="${unqualifiedVersion}.${buildQualifier}"/>
<property name="osgi.instance.area.default" value="@user.home/Documents/workspace-spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}"/>
<plugin id="org.eclipse.equinox.simpleconfigurator" autoStart="true" startLevel="1" />
<plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.equinox.common" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.event" autoStart="true" startLevel="2" />
<plugin id="org.apache.felix.scr" autoStart="true" startLevel="2" />
<plugin id="org.eclipse.equinox.p2.reconciler.dropins" autoStart="true" startLevel="4" />
<plugin id="org.eclipse.update.configurator" autoStart="false" startLevel="4" />
</configurations>
</product>

View File

@@ -0,0 +1,16 @@
instructions.configure=\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:https${#58}//download.eclipse.org/releases/latest,name:Latest Eclipse Release);\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:https${#58}//download.eclipse.org/releases/latest,name:Latest Eclipse Release);\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:https${#58}//download.springsource.com/release/TOOLS/sts4/update/latest,name:Spring Tool Suite 4);\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:https${#58}//download.springsource.com/release/TOOLS/sts4/update/latest,name:Spring Tool Suite 4);\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:0,location:https${#58}//download.springsource.com/release/TOOLS/sts4-language-server-integrations,name:Spring Tools 4 Language Servers for Eclipse);\
org.eclipse.equinox.p2.touchpoint.eclipse.addRepository(type:1,location:https${#58}//download.springsource.com/release/TOOLS/sts4-language-server-integrations,name:Spring Tools 4 Language Servers for Eclipse);\
org.eclipse.equinox.p2.touchpoint.natives.mkdir(path:${installFolder}/dropins);
instructions.unconfigure=\
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:0,location:https${#58}//download.eclipse.org/releases/latest);\
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:1,location:https${#58}//download.eclipse.org/releases/latest);\
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:0,location:https${#58}//download.springsource.com/release/TOOLS/sts4/update/latest);\
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:1,location:https${#58}//download.springsource.com/release/TOOLS/sts4/update/latest);\
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:0,location:https${#58}//download.springsource.com/release/TOOLS/sts4-language-server-integrations);\
org.eclipse.equinox.p2.touchpoint.eclipse.removeRepository(type:1,location:https${#58}//download.springsource.com/release/TOOLS/sts4-language-server-integrations);

View File

@@ -0,0 +1,655 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot.ide</groupId>
<artifactId>org.springframework.boot.ide</artifactId>
<version>4.13.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>org.springframework.boot.ide.product</artifactId>
<packaging>eclipse-repository</packaging>
<properties>
<justj.repository>https://download.eclipse.org/justj/jres/17/updates/release/latest/</justj.repository>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<id>default-install</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-repository-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<includeAllDependencies>false</includeAllDependencies>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-publisher-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<publishArtifacts>true</publishArtifacts>
</configuration>
</plugin>
<!--
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<executionEnvironment>none</executionEnvironment>
</configuration>
</plugin>
-->
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-p2-director-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<id>materialize-products</id>
<goals>
<goal>materialize-products</goal>
</goals>
<phase>package</phase>
</execution>
<execution>
<id>archive-products</id>
<goals>
<goal>archive-products</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
<configuration>
<products>
<product>
<id>org.springframework.boot.ide.branding.sts4</id>
<rootFolder>sts-${unqualifiedVersion}.${p2.qualifier}</rootFolder>
<rootFolders>
<macosx>SpringToolSuite4.app</macosx>
</rootFolders>
<archiveFileName>spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}</archiveFileName>
</product>
</products>
<formats>
<linux>tar.gz</linux>
<macosx>tar.gz</macosx>
</formats>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho.extras</groupId>
<artifactId>tycho-eclipserun-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<repositories>
<repository>
<id>2021-06</id>
<layout>p2</layout>
<url>https://download.eclipse.org/releases/2021-06</url>
</repository>
</repositories>
<argLine>-Declipse.p2.mirrors=false -Dorg.eclipse.ecf.provider.filetransfer.retrieve.readTimeout=100000 -Dorg.eclipse.ecf.provider.filetransfer.retrieve.retryAttempts=30 -Dorg.eclipse.ecf.provider.filetransfer.retrieve.closeTimeout=100000</argLine>
<dependencies>
<dependency>
<artifactId>org.eclipse.pde.api.tools</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.pde.build</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.pde.core</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.equinox.launcher</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.osgi.compatibility.state</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>javax.annotation</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.equinox.p2.transport.ecf</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.equinox.p2.repository</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.equinox.p2.touchpoint.natives</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.equinox.p2.touchpoint.eclipse</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.equinox.p2.artifact.repository
</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.equinox.p2.director.app</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.equinox.ds</artifactId>
<type>eclipse-plugin</type>
</dependency>
<dependency>
<artifactId>org.eclipse.core.net</artifactId>
<type>eclipse-plugin</type>
</dependency>
</dependencies>
</configuration>
<executions>
<execution>
<id>macos-x86_64</id>
<phase>package</phase>
<goals>
<goal>eclipse-run</goal>
</goals>
<configuration>
<appArgLine>-consoleLog -application org.eclipse.equinox.p2.director -nosplash -destination ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/x86_64/SpringToolSuite4.app -repository ${justj.repository} -installIUs org.eclipse.justj.openjdk.hotspot.jre.full.feature.group</appArgLine>
</configuration>
</execution>
<execution>
<id>macos-aarch_64</id>
<phase>package</phase>
<goals>
<goal>eclipse-run</goal>
</goals>
<configuration>
<appArgLine>-consoleLog -application org.eclipse.equinox.p2.director -nosplash -destination ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/aarch64/SpringToolSuite4.app -repository ${justj.repository} -installIUs org.eclipse.justj.openjdk.hotspot.jre.full.feature.group</appArgLine>
</configuration>
</execution>
<execution>
<id>windows-x86_64</id>
<phase>package</phase>
<goals>
<goal>eclipse-run</goal>
</goals>
<configuration>
<appArgLine>-consoleLog -application org.eclipse.equinox.p2.director -nosplash -destination ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/win32/win32/x86_64/sts-${unqualifiedVersion}.${p2.qualifier} -repository ${justj.repository} -installIUs org.eclipse.justj.openjdk.hotspot.jre.full.feature.group</appArgLine>
</configuration>
</execution>
<execution>
<id>linux_x86_64</id>
<phase>package</phase>
<goals>
<goal>eclipse-run</goal>
</goals>
<configuration>
<appArgLine>-consoleLog -application org.eclipse.equinox.p2.director -nosplash -destination ${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/linux/gtk/x86_64/sts-${unqualifiedVersion}.${p2.qualifier} -repository ${justj.repository} -installIUs org.eclipse.justj.openjdk.hotspot.jre.full.feature.group</appArgLine>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>generate-license-files</id>
<phase>package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar</argument>
<argument>${project.build.directory}/../../common/eclipse-distribution-license-file-generator.jar</argument>
<argument>${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/x86_64/SpringToolSuite4.app/Contents/Eclipse/plugins/</argument>
<argument>${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/x86_64/SpringToolSuite4.app/Contents/Eclipse/open-source-licenses.txt</argument>
<argument>${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/aarch64/SpringToolSuite4.app/Contents/Eclipse/plugins/</argument>
<argument>${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/aarch64/SpringToolSuite4.app/Contents/Eclipse/open-source-licenses.txt</argument>
<argument>${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/linux/gtk/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/plugins/</argument>
<argument>${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/linux/gtk/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/open-source-licenses.txt</argument>
<argument>${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/win32/win32/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/plugins/</argument>
<argument>${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/win32/win32/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/open-source-licenses.txt</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>generate-self-extracting-jar</id>
<phase>verify</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar</argument>
<argument>${project.build.directory}/../../common/self-extracting-jar-creator.jar</argument>
<argument>${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-win32.win32.x86_64.zip</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<!-- win exe signing reguires the npm module osslsigncode to be installed on the build machine and the corresponding keys to be around in PKCS#12 format -->
<execution>
<id>win-exe-signing</id>
<phase>package</phase>
<configuration>
<skip>${skip.win.signing}</skip>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<exec executable="osslsigncode" failonerror="true">
<arg value="sign"/>
<arg value="-pkcs12"/>
<arg value="${env.WIN_KEY_LOCATION}"/>
<arg value="-pass"/>
<arg value="${env.bamboo_signing_store_password}"/>
<arg value="-n"/>
<arg value="Spring Tools 4"/>
<arg value="-i"/>
<arg value="https://spring.io"/>
<arg value="-t"/>
<arg value="http://timestamp.digicert.com"/>
<arg value="-in"/>
<arg value="${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/win32/win32/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/SpringToolSuite4.exe"/>
<arg value="-out"/>
<arg value="${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/win32/win32/x86_64/sts-${unqualifiedVersion}.${p2.qualifier}/SpringToolSuite4.exe"/>
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<!-- macos code signing requires the build to run on a macOS machine with Xcode installed, including the appropriate Apple Developer certificates for code signing -->
<execution>
<id>osx-app-signing</id>
<phase>package</phase>
<configuration>
<skip>${skip.osx.signing}</skip>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<exec executable="codesign" failonerror="true">
<arg value="--verbose"/>
<arg value="--deep"/>
<arg value="--force"/>
<arg value="--entitlements"/>
<arg value="${project.build.directory}/../entitlements.plist"/>
<arg value="--options=runtime"/>
<arg value="--keychain"/>
<arg value="${env.KEYCHAIN}"/>
<arg value="-s"/>
<arg value="${env.MACOS_CERTIFICATE_ID}"/>
<arg value="${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/x86_64/SpringToolSuite4.app"/>
</exec>
<exec executable="codesign" failonerror="true">
<arg value="--verbose"/>
<arg value="--deep"/>
<arg value="--force"/>
<arg value="--entitlements"/>
<arg value="${project.build.directory}/../entitlements.plist"/>
<arg value="--options=runtime"/>
<arg value="--keychain"/>
<arg value="${env.KEYCHAIN}"/>
<arg value="-s"/>
<arg value="${env.MACOS_CERTIFICATE_ID}"/>
<arg value="${project.build.directory}/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/aarch64/SpringToolSuite4.app"/>
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<!-- the creation of the DMG file is based on appdmg: https://www.npmjs.com/package/appdmg -->
<execution>
<id>osx-dmg-creation</id>
<phase>verify</phase>
<configuration>
<target>
<exec executable="/usr/local/bin/appdmg" failonerror="true">
<arg value="${project.build.directory}/../spring-tool-suite-4-dmg-config-${dist.target.major}-x86.json"/>
<arg value="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.x86_64.dmg"/>
</exec>
<delete file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.x86_64.tar.gz"/>
<exec executable="/usr/local/bin/appdmg" failonerror="true">
<arg value="${project.build.directory}/../spring-tool-suite-4-dmg-config-${dist.target.major}-aarch64.json"/>
<arg value="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.aarch64.dmg"/>
</exec>
<delete file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.aarch64.tar.gz"/>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>osx-dmg-signing</id>
<phase>verify</phase>
<configuration>
<skip>${skip.osx.signing}</skip>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<property name="dmgName" value="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.x86_64.dmg" />
<exec executable="codesign" failonerror="true">
<arg value="--verbose"/>
<arg value="--keychain"/>
<arg value="${env.KEYCHAIN}"/>
<arg value="-s"/>
<arg value="${env.MACOS_CERTIFICATE_ID}"/>
<arg value="${dmgName}"/>
</exec>
<property name="dmgName-aarch" value="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.aarch64.dmg" />
<exec executable="codesign" failonerror="true">
<arg value="--verbose"/>
<arg value="--keychain"/>
<arg value="${env.KEYCHAIN}"/>
<arg value="-s"/>
<arg value="${env.MACOS_CERTIFICATE_ID}"/>
<arg value="${dmgName-aarch}"/>
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<!-- the notarizing of the DMG file needs this service running somewhere: https://github.com/eclipse-cbi/macos-notarization-service -->
<execution>
<id>osx-dmg-notarizing</id>
<phase>verify</phase>
<configuration>
<skip>${skip.osx.notarizing}</skip>
<target>
<property name="dmgName" value="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.x86_64.dmg" />
<exec executable="/bin/bash" failonerror="true">
<arg value="${project.build.directory}/../macos-notarize.sh"/>
<arg value="${dmgName}"/>
<arg value="${env.MACOS_NOTARIZATION_SERVICE_URL}"/>
</exec>
<property name="dmgName-aarch64" value="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.aarch64.dmg" />
<exec executable="/bin/bash" failonerror="true">
<arg value="${project.build.directory}/../macos-notarize.sh"/>
<arg value="${dmgName-aarch64}"/>
<arg value="${env.MACOS_NOTARIZATION_SERVICE_URL}"/>
</exec>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>upload-product-bundles</id>
<phase>deploy</phase>
<configuration>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<taskdef resource="org/springframework/build/aws/ant/antlib.xml" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.x86_64.dmg" algorithm="SHA1" fileext=".sha1" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.x86_64.dmg" algorithm="MD5" fileext=".md5" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.aarch64.dmg" algorithm="SHA1" fileext=".sha1" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-macosx.cocoa.aarch64.dmg" algorithm="MD5" fileext=".md5" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-linux.gtk.x86_64.tar.gz" algorithm="SHA1" fileext=".sha1" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-linux.gtk.x86_64.tar.gz" algorithm="MD5" fileext=".md5" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-win32.win32.x86_64.zip" algorithm="SHA1" fileext=".sha1" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-win32.win32.x86_64.zip" algorithm="MD5" fileext=".md5" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-win32.win32.x86_64.self-extracting.jar" algorithm="SHA1" fileext=".sha1" />
<checksum file="${project.build.directory}/products/spring-tool-suite-4-${unqualifiedVersion}.${p2.qualifier}-${dist.target}-win32.win32.x86_64.self-extracting.jar" algorithm="MD5" fileext=".md5" />
<s3 accessKey="${dist.accessKey}" secretKey="${dist.secretKey}">
<delete bucketName="${dist.bucket}">
<fileset dir="${dist.path.product}">
<include name="spring-tool-suite-4*.zip" />
<include name="spring-tool-suite-4*.zip.md5" />
<include name="spring-tool-suite-4*.zip.sha1" />
<include name="spring-tool-suite-4*.jar" />
<include name="spring-tool-suite-4*.jar.md5" />
<include name="spring-tool-suite-4*.jar.sha1" />
<include name="spring-tool-suite-4*.tar.gz" />
<include name="spring-tool-suite-4*.tar.gz.md5" />
<include name="spring-tool-suite-4*.tar.gz.sha1" />
<include name="spring-tool-suite-4*.dmg" />
<include name="spring-tool-suite-4*.dmg.md5" />
<include name="spring-tool-suite-4*.dmg.sha1" />
</fileset>
</delete>
<upload bucketName="${dist.bucket}" toDir="${dist.path.product}"
publicRead="true">
<fileset dir="${project.build.directory}/products">
<include name="spring-tool-suite-4*.zip" />
<include name="spring-tool-suite-4*.zip.md5" />
<include name="spring-tool-suite-4*.zip.sha1" />
<include name="spring-tool-suite-4*.jar" />
<include name="spring-tool-suite-4*.jar.md5" />
<include name="spring-tool-suite-4*.jar.sha1" />
<include name="spring-tool-suite-4*.tar.gz" />
<include name="spring-tool-suite-4*.tar.gz.md5" />
<include name="spring-tool-suite-4*.tar.gz.sha1" />
<include name="spring-tool-suite-4*.dmg" />
<include name="spring-tool-suite-4*.dmg.md5" />
<include name="spring-tool-suite-4*.dmg.sha1" />
</fileset>
</upload>
</s3>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>update-nightly-downloads</id>
<phase>deploy</phase>
<configuration>
<skip>${skip.update-nightly-download-page}</skip>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<taskdef resource="org/springframework/build/aws/ant/antlib.xml" />
<copy file="${project.build.directory}/../../common/html/nightly-generic-snippet-incl-apple-m1.html" tofile="${project.build.directory}/../../common/html/sts4-nightly-${dist.target.major}.html" overwrite="true"/>
<replace file="${project.build.directory}/../../common/html/sts4-nightly-${dist.target.major}.html" token="@QUALIFIER@" value="${unqualifiedVersion}.${p2.qualifier}" summary="yes" />
<replace file="${project.build.directory}/../../common/html/sts4-nightly-${dist.target.major}.html" token="@TARGET@" value="${dist.target}" summary="yes" />
<replace file="${project.build.directory}/../../common/html/sts4-nightly-${dist.target.major}.html" token="@MAJOR-TARGET@" value="${dist.target.major}" summary="yes" />
<s3 accessKey="${dist.accessKey}" secretKey="${dist.secretKey}">
<upload bucketName="${dist.bucket}" file="${project.build.directory}/../../common/html/sts4-nightly-${dist.target.major}.html"
toFile="snapshot/STS4/sts4-nightly-${dist.target.major}.html" publicRead="true">
</upload>
</s3>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>zip-sts-repository</id>
<phase>install</phase>
<configuration>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<taskdef resource="org/springframework/build/aws/ant/antlib.xml" />
<property name="dist.full.version" value="${unqualifiedVersion}.${p2.qualifier}-${dist.target}" />
<property name="dist.file.name" value="${dist.project}-${dist.full.version}-updatesite.zip" />
<zip zipfile="${project.build.directory}/repository/${dist.file.name}" filesonly="true">
<zipfileset
dir="${project.build.directory}/repository">
<exclude name="*.zip" />
<exclude name="**/*.gz" />
</zipfileset>
</zip>
<checksum file="${project.build.directory}/repository/${dist.file.name}" algorithm="SHA1" fileext=".sha1" />
<checksum file="${project.build.directory}/repository/${dist.file.name}" algorithm="MD5" fileext=".md5" />
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>upload-sts-repository</id>
<phase>deploy</phase>
<configuration>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties" />
<taskdef resource="org/springframework/build/aws/ant/antlib.xml" />
<s3 accessKey="${dist.accessKey}" secretKey="${dist.secretKey}">
<delete bucketName="${dist.bucket}">
<fileset dir="${dist.path.repo}">
<include name="p2.index" />
<include name="site.xml" />
<include name="content.jar" />
<include name="artifacts.xml.xz" />
<include name="content.jar" />
<include name="content.xml.xz" />
<include name="plugins/**" />
<include name="features/**" />
<include name="binary/**" />
<include name="*.zip" />
<include name="*.sha1" />
<include name="*.md5" />
</fileset>
</delete>
<upload bucketName="${dist.bucket}" toDir="${dist.path.repo}" publicRead="true">
<fileset
dir="${project.build.directory}/repository">
<include name="**/*" />
<include name="**" />
</fileset>
</upload>
</s3>
</target>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.springframework.build</groupId>
<artifactId>org.springframework.build.aws.ant</artifactId>
<version>3.0.6.RELEASE</version>
</dependency>
<dependency>
<groupId>net.java.dev.jets3t</groupId>
<artifactId>jets3t</artifactId>
<version>0.8.1</version>
</dependency>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
</dependencies>
</plugin>
</plugins>
<!--
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<dependency-resolution>
<profileProperties>
<org.eclipse.justj.buildtime>true</org.eclipse.justj.buildtime>
</profileProperties>
</dependency-resolution>
</configuration>
</plugin>
</plugins>
</pluginManagement> -->
</build>
</project>

View File

@@ -0,0 +1,10 @@
{
"title": "Spring Tool Suite 4",
"icon": "../org.springframework.boot.ide.branding/sts4.icns",
"contents": [
{ "x": 192, "y": 100, "type": "file", "path": "target/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/aarch64/SpringToolSuite4.app" },
{ "x": 448, "y": 100, "type": "link", "path": "/Applications" },
{ "x": 1000, "y": 2000, "type": "file", "path": "../org.springframework.boot.ide.branding/sts4.icns", "name": ".VolumeIcon.icns" }
],
"format": "UDZO"
}

View File

@@ -0,0 +1,10 @@
{
"title": "Spring Tool Suite 4",
"icon": "../org.springframework.boot.ide.branding/sts4.icns",
"contents": [
{ "x": 192, "y": 100, "type": "file", "path": "target/products/org.springframework.boot.ide.branding.sts4/macosx/cocoa/x86_64/SpringToolSuite4.app" },
{ "x": 448, "y": 100, "type": "link", "path": "/Applications" },
{ "x": 1000, "y": 2000, "type": "file", "path": "../org.springframework.boot.ide.branding/sts4.icns", "name": ".VolumeIcon.icns" }
],
"format": "UDZO"
}

View File

@@ -828,20 +828,15 @@
<package.qualifierPrefix>e422</package.qualifierPrefix>
</properties>
<repositories>
<!-- <repository>
<repository>
<id>2021-12</id>
<layout>p2</layout>
<url>https://download.eclipse.org/releases/2021-12/</url>
</repository> -->
<repository>
<id>2021-12-staging</id>
<layout>p2</layout>
<url>https://download.eclipse.org/staging/2021-12/</url>
</repository>
<repository>
<id>orbit</id>
<layout>p2</layout>
<url>https://download.eclipse.org/tools/orbit/downloads/drops/R20210825222808/repository</url>
<url>https://download.eclipse.org/tools/orbit/downloads/drops/R20211213173813/repository</url>
</repository>
<repository>
<id>m2e</id>
@@ -978,6 +973,168 @@
</profile>
<profile>
<id>e423</id>
<properties>
<dist.target>e4.23.0</dist.target>
<dist.target.major>e4.23</dist.target.major>
<dist.platform.name>2022-03</dist.platform.name>
<dist.platform.name.long>2022-03 (4.23)</dist.platform.name.long>
<dist.platform.id>2022-03</dist.platform.id>
<dist.platform.version>4.23</dist.platform.version>
<package.qualifierPrefix>e423</package.qualifierPrefix>
</properties>
<repositories>
<!-- <repository>
<id>2022-03</id>
<layout>p2</layout>
<url>https://download.eclipse.org/releases/2022-03/</url>
</repository> -->
<repository>
<id>2022-03-staging</id>
<layout>p2</layout>
<url>https://download.eclipse.org/staging/2022-03/</url>
</repository>
<repository>
<id>orbit</id>
<layout>p2</layout>
<url>https://download.eclipse.org/tools/orbit/downloads/drops/I20220106214959/repository</url>
</repository>
<repository>
<id>m2e</id>
<layout>p2</layout>
<url>https://download.eclipse.org/technology/m2e/releases/latest/</url>
</repository>
<repository>
<id>latest-m2e-wtp</id>
<layout>p2</layout>
<url>https://download.eclipse.org/m2e-wtp/snapshots/1.4/m2e-wtp/</url>
</repository>
<!-- <repository>
<id>latest-m2e-wtp</id>
<layout>p2</layout>
<url>https://download.eclipse.org/m2e-wtp/milestones/1.4/1.4.4.20200220-1005/</url>
</repository> -->
<repository>
<id>maven-extras-mirror</id>
<layout>p2</layout>
<url>https://download.springsource.com/release/TOOLS/third-party/m2e-sts310-signed/</url>
</repository>
<repository>
<id>maven-egit</id>
<layout>p2</layout>
<url>https://repo1.maven.org/maven2/.m2e/connectors/m2eclipse-egit/0.15.1/N/LATEST</url>
</repository>
<!-- <repository>
<id>maven-wro4j</id>
<layout>p2</layout>
<url>https://download.jboss.org/jbosstools/updates/m2e-wro4j/</url>
</repository> -->
<repository>
<id>maven-wro4j</id>
<layout>p2</layout>
<url>https://download.jboss.org/jbosstools/updates/m2e-extensions/m2e-wro4j/1.1.0-2014-06-25_06-16-31-H26/</url>
</repository>
<repository>
<id>m2e-chromatic</id>
<layout>p2</layout>
<url>https://sidespin.github.io/m2e-chromatic/update/</url>
</repository>
<repository>
<id>maven-devtools</id>
<layout>p2</layout>
<url>https://dist.springsource.com/release/TOOLS/mavendevtools/</url>
</repository>
<repository>
<id>maven-dependency-support</id>
<layout>p2</layout>
<url>https://ianbrandt.github.io/m2e-maven-dependency-plugin/</url>
</repository>
<repository>
<id>ansi-console</id>
<layout>p2</layout>
<url>https://www.mihai-nita.net/eclipse</url>
</repository>
<!-- <repository>
<id>xtext-base</id>
<layout>p2</layout>
<url>https://download.eclipse.org/modeling/tmf/xtext/updates/milestones/</url>
</repository> -->
<repository>
<id>mylyn-markdown</id>
<layout>p2</layout>
<url>https://download.eclipse.org/mylyn/docs/releases/3.0/</url>
</repository>
<repository>
<id>wildwebdeveloper</id>
<layout>p2</layout>
<url>https://download.eclipse.org/wildwebdeveloper/releases/latest</url>
</repository>
<repository>
<id>lsp4e</id>
<layout>p2</layout>
<url>https://download.eclipse.org/lsp4e/snapshots/</url>
</repository>
<!-- <repository>
<id>lsp4e</id>
<layout>p2</layout>
<url>https://download.eclipse.org/lsp4e/releases/latest/</url>
</repository> -->
<!-- <repository>
<id>chromium-binaries</id>
<layout>p2</layout>
<url>https://dl.maketechnology.io/chromium-cef/rls/repository</url>
</repository> -->
</repositories>
<modules>
<!-- Xterm modules -->
<!-- <module>../eclipse-extensions/org.springframework.ide.eclipse.xterm</module>
<module>../eclipse-extensions/org.springframework.ide.eclipse.xterm.feature</module>
<module>../eclipse-extensions/org.springframework.ide.eclipse.xterm.linux.x86_64</module>
<module>../eclipse-extensions/org.springframework.ide.eclipse.xterm.macosx.x86_64</module>
<module>../eclipse-extensions/org.springframework.ide.eclipse.xterm.win32.x86_64</module>
-->
<module>org.springframework.boot.ide.product.e423</module>
</modules>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<environments>
<environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>aarch64</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86_64</arch>
</environment>
</environments>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>build.springsource.com</id>
<activation>

View File

@@ -378,20 +378,66 @@
<package.qualifierPrefix>e422</package.qualifierPrefix>
</properties>
<repositories>
<!-- <repository>
<repository>
<id>2021-12</id>
<layout>p2</layout>
<url>https://download.eclipse.org/releases/2021-12/</url>
</repository> -->
<repository>
<id>2021-12-staging</id>
<layout>p2</layout>
<url>https://download.eclipse.org/staging/2021-12/</url>
</repository>
<repository>
<id>orbit</id>
<layout>p2</layout>
<url>https://download.eclipse.org/tools/orbit/downloads/drops/R20210825222808/repository</url>
<url>https://download.eclipse.org/tools/orbit/downloads/drops/R20211213173813/repository</url>
</repository>
<repository>
<id>mylyn-markdown</id>
<layout>p2</layout>
<url>https://download.eclipse.org/mylyn/docs/releases/3.0/</url>
</repository>
<repository>
<id>lsp4e</id>
<layout>p2</layout>
<url>https://download.eclipse.org/lsp4e/snapshots/</url>
</repository>
<repository>
<id>tm4e</id>
<layout>p2</layout>
<url>https://download.eclipse.org/tm4e/snapshots/</url>
</repository>
<repository>
<id>wwd</id>
<layout>p2</layout>
<!-- <url>https://download.eclipse.org/wildwebdeveloper/releases/latest/</url> -->
<url>https://download.eclipse.org/wildwebdeveloper/snapshots</url>
</repository>
</repositories>
</profile>
<profile>
<id>e423</id>
<properties>
<dist.target>e4.23.0</dist.target>
<dist.target.major>e4.23</dist.target.major>
<dist.platform.name>2022-03</dist.platform.name>
<dist.platform.name.long>2022-03 (4.23)</dist.platform.name.long>
<dist.platform.id>2022-03</dist.platform.id>
<dist.platform.version>4.23</dist.platform.version>
<package.qualifierPrefix>e423</package.qualifierPrefix>
</properties>
<repositories>
<!-- <repository>
<id>2022-03</id>
<layout>p2</layout>
<url>https://download.eclipse.org/releases/2022-03/</url>
</repository> -->
<repository>
<id>2022-03-staging</id>
<layout>p2</layout>
<url>https://download.eclipse.org/staging/2022-03/</url>
</repository>
<repository>
<id>orbit</id>
<layout>p2</layout>
<url>https://download.eclipse.org/tools/orbit/downloads/drops/I20220106214959/repository</url>
</repository>
<repository>
<id>mylyn-markdown</id>

View File

@@ -28,6 +28,7 @@ import java.util.stream.Collectors;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.project.MavenProject;
import org.junit.Ignore;
import org.junit.Test;
/**
@@ -41,6 +42,7 @@ import org.junit.Test;
* 1. Takes 40 mins to execute for the concourse build
* 2. The project is only used by tests and highly unlikely to be changed
*/
@Ignore
public class DependencyTreeTest {
private void testMavenClasspath(String projectName) throws Exception {

View File

@@ -27,6 +27,7 @@ import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.ide.vscode.commons.java.IJavaModuleData;
import org.springframework.ide.vscode.commons.java.IMethod;
@@ -43,6 +44,7 @@ import com.google.common.cache.LoadingCache;
import reactor.util.function.Tuple2;
@Ignore
public class JavaIndexTest {
private static BasicFileObserver fileObserver = new BasicFileObserver();

View File

@@ -39,6 +39,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -64,6 +65,7 @@ import com.google.common.collect.ImmutableList;
* @author Alex Boyko
*
*/
@Ignore
public class MavenProjectCacheTest {
private static final int TIMEOUT_SECONDS = 60;

View File

@@ -28,7 +28,7 @@ import javolution.text.Text;
public class TextDocument implements IDocument {
ILineTracker lineTracker = new DefaultLineTracker();
private static final Pattern NEWLINE = Pattern.compile("\\r|\\n|\\r\\n|\\n\\r");
private static final Pattern NEWLINE = Pattern.compile("\\n|\\r\\n");
private final LanguageId languageId;
private final String uri;

View File

@@ -14,6 +14,7 @@ import org.springframework.ide.vscode.commons.util.Streams;
import org.springframework.ide.vscode.commons.yaml.schema.YType;
import org.springframework.ide.vscode.commons.yaml.schema.YTypeUtil;
import org.springframework.ide.vscode.commons.yaml.schema.YTypedProperty;
import org.springframework.ide.vscode.commons.yaml.structure.YamlDocument;
import org.springframework.ide.vscode.commons.yaml.util.YamlIndentUtil;
/**
@@ -29,7 +30,7 @@ public class AppendTextBuilder {
this.typeUtil = typeUtil;
}
public String buildFor(YType type) {
public String buildFor(YType type, YamlDocument doc) {
//Note that caller is responsible for proper indentation
//to align with the parent. The strings created here only need to contain
//indentation spaces to indent *more* than the parent node.
@@ -39,22 +40,22 @@ public class AppendTextBuilder {
//(or potentially do a lot of string copying)
StringBuilder text = new StringBuilder();
build(type, 0, text);
build(type, 0, text, doc);
return text.toString();
}
private void build(YType type, int indent, StringBuilder text) {
private void build(YType type, int indent, StringBuilder text, YamlDocument doc) {
if (type==null) {
//Assume its some kind of pojo bean
newline(text, indent+YamlIndentUtil.INDENT_BY);
newline(text, indent+YamlIndentUtil.INDENT_BY, doc);
} else if (typeUtil.isMap(type)) {
//ready to enter nested map key on next line
newline(text, indent+YamlIndentUtil.INDENT_BY);
newline(text, indent+YamlIndentUtil.INDENT_BY, doc);
} else if (typeUtil.isSequencable(type)) {
//ready to enter sequence element on next line
newline(text, indent);
newline(text, indent, doc);
text.append("- ");
singleMostImportantProperty(typeUtil.getDomainType(type), indent+2, text);
singleMostImportantProperty(typeUtil.getDomainType(type), indent+2, text, doc);
//Yes using 2 here instead of YamlIndentUtil.INDENT_BY is deliberate. It's the same value (now),
// but the 2 used here is the width of the "- " which should determine nested indent level for things to
// line up properly.
@@ -62,11 +63,11 @@ public class AppendTextBuilder {
//ready to enter whatever on the same line
text.append(" ");
} else {
newline(text, indent+YamlIndentUtil.INDENT_BY);
newline(text, indent+YamlIndentUtil.INDENT_BY, doc);
}
}
private void singleMostImportantProperty(YType type, int indent, StringBuilder text) {
private void singleMostImportantProperty(YType type, int indent, StringBuilder text, YamlDocument doc) {
if (type!=null) {
YTypedProperty singleProp = Streams.getSingle(typeUtil.getProperties(type).stream()
.filter(p -> p.isPrimary()));
@@ -77,13 +78,13 @@ public class AppendTextBuilder {
if (singleProp!=null) {
text.append(singleProp.getName());
text.append(':');
build(singleProp.getType(), indent+YamlIndentUtil.INDENT_BY, text);
build(singleProp.getType(), indent+YamlIndentUtil.INDENT_BY, text, doc);
}
}
}
private void newline(StringBuilder text, int indent) {
text.append("\n");
private void newline(StringBuilder text, int indent, YamlDocument doc) {
text.append(doc == null || doc.getDocument() == null ? System.lineSeparator() : doc.getDocument().getDefaultLineDelimiter());
for (int i = 0; i < indent; i++) {
text.append(' ');
}

View File

@@ -201,7 +201,7 @@ public class YTypeAssistContext extends AbstractYamlAssistContext {
}
snippet.append(p.getName());
snippet.append(":");
snippet.append(appendTextFor(YType));
snippet.append(appendTextFor(YType, doc));
edits.insert(queryOffset, indenter.applyIndentation(snippet.toString(), referenceIndent));
}
ICompletionProposal completion = completionFactory().beanProperty(doc.getDocument(),
@@ -262,9 +262,10 @@ public class YTypeAssistContext extends AbstractYamlAssistContext {
/**
* Computes the text that should be appended at the end of a completion
* proposal depending on what type of value is expected.
* @param doc
*/
protected String appendTextFor(YType type) {
return new AppendTextBuilder(typeUtil).buildFor(type);
protected String appendTextFor(YType type, YamlDocument doc) {
return new AppendTextBuilder(typeUtil).buildFor(type, doc);
}
private List<ICompletionProposal> getValueCompletions(YamlDocument doc, SNode node, int offset, String query) {
@@ -461,7 +462,7 @@ public class YTypeAssistContext extends AbstractYamlAssistContext {
@Override
protected DocumentEdits transformEdit(DocumentEdits textEdit) {
textEdit.transformFirstNonWhitespaceEdit((Integer offset, String insertText) -> {
YamlIndentUtil indenter = new YamlIndentUtil("\n");
YamlIndentUtil indenter = new YamlIndentUtil(doc);
if (needNewline(textEdit)) {
return insertText.substring(0, offset)
+ "\n" +Strings.repeat(" ", node.getIndent())+"- "

View File

@@ -114,7 +114,7 @@ public class YamlCompletionEngine implements ICompletionEngine {
protected Collection<? extends ICompletionProposal> getRelaxedCompletions(int offset, YamlDocument doc, SNode current, SNode contextNode, int baseIndent, double deempasizeBy) {
try {
return fixIndentations(getBaseCompletions(offset, doc, current, contextNode),
current, contextNode, baseIndent, deempasizeBy);
current, contextNode, baseIndent, deempasizeBy, doc);
} catch (Exception e) {
Log.log(e);
}
@@ -122,14 +122,14 @@ public class YamlCompletionEngine implements ICompletionEngine {
}
protected Collection<? extends ICompletionProposal> fixIndentations(Collection<ICompletionProposal> completions, SNode currentNode,
SNode contextNode, int baseIndent, double deempasizeBy) {
SNode contextNode, int baseIndent, double deempasizeBy, YamlDocument doc) {
if (!completions.isEmpty()) {
int dashyIndent = getTargetIndent(contextNode, currentNode, true);
int plainIndent = getTargetIndent(contextNode, currentNode, false);
List<ICompletionProposal> transformed = new ArrayList<>();
for (ICompletionProposal p : completions) {
int targetIndent = p.getLabel().startsWith("- ") ? dashyIndent : plainIndent;
ScoreableProposal p_fixed = indentFix((ScoreableProposal)p, targetIndent - baseIndent, currentNode, contextNode);
ScoreableProposal p_fixed = indentFix((ScoreableProposal)p, targetIndent - baseIndent, currentNode, contextNode, doc);
if (p_fixed!=null) {
p_fixed.deemphasize(deempasizeBy);
transformed.add(p_fixed);
@@ -140,12 +140,12 @@ public class YamlCompletionEngine implements ICompletionEngine {
return Collections.emptyList();
}
protected ScoreableProposal indentFix(ScoreableProposal p, int fixIndentBy, SNode currentNode, SNode contextNode) {
protected ScoreableProposal indentFix(ScoreableProposal p, int fixIndentBy, SNode currentNode, SNode contextNode, YamlDocument doc) {
if (fixIndentBy==0) {
return p;
} else if (fixIndentBy>0) {
if (isExtraIndentRelaxable(contextNode, fixIndentBy)) {
return indented(p, Strings.repeat(" ", fixIndentBy));
return indented(p, Strings.repeat(" ", fixIndentBy), doc);
}
} else { // fixIndentBy < 0
if (isLesserIndentRelaxable(currentNode, contextNode)) {
@@ -228,7 +228,7 @@ public class YamlCompletionEngine implements ICompletionEngine {
return null;
}
public ScoreableProposal indented(ICompletionProposal proposal, String indentStr) {
public ScoreableProposal indented(ICompletionProposal proposal, String indentStr, YamlDocument doc) {
int numArrows = (indentStr.length()+1)/2;
ScoreableProposal transformed = new TransformedCompletion(proposal) {
@Override public String tranformLabel(String originalLabel) {
@@ -236,7 +236,7 @@ public class YamlCompletionEngine implements ICompletionEngine {
}
@Override public DocumentEdits transformEdit(DocumentEdits originalEdit) {
// originalEdit.indentFirstEdit(indentStr);
YamlIndentUtil indenter = new YamlIndentUtil("\n");
YamlIndentUtil indenter = new YamlIndentUtil(doc);
if (originalEdit.hasRelativeIndents()) {
originalEdit.transformFirstNonWhitespaceEdit((Integer offset, String insertText) -> {
String prefix = insertText.substring(0, offset);

View File

@@ -40,7 +40,7 @@ public class YamlIndentUtil {
*/
public final String NEWLINE;
public YamlIndentUtil(String newline) {
private YamlIndentUtil(String newline) {
this.NEWLINE = newline;
Assert.isNotNull(NEWLINE);
}

View File

@@ -241,7 +241,7 @@ public class Editor {
if (selectionStart<selectionEnd) {
text = text.substring(0,selectionStart) + CURSOR + text.substring(selectionStart);
}
return deWindowsify(text);
return text;
}
public void setText(String content) throws Exception {
@@ -270,11 +270,6 @@ public class Editor {
return doc.getText(range);
}
private String deWindowsify(String text) {
return text.replaceAll("\\r\\n", "\n");
}
private boolean matchProblem(Diagnostic problem, String expect) {
String[] parts = expect.split("\\|");
assertEquals(2, parts.length);

View File

@@ -6,7 +6,6 @@ cd ../jdt-ls-extension
if command -v xvfb-run ; then
echo "Using xvfb to run in headless environment..."
xvfb-run ../mvnw \
-DskipTests \
-DtrimStackTrace=false \
-f ../pom.xml \
-pl $modules \
@@ -14,7 +13,6 @@ if command -v xvfb-run ; then
clean install
else
../mvnw \
-DskipTests \
-DtrimStackTrace=false \
-f ../pom.xml \
-pl $modules \
@@ -24,7 +22,6 @@ fi
cd ../xml-ls-extension
../mvnw \
-DtrimStackTrace=false \
-DskipTests \
-f ../pom.xml \
-pl xml-ls-extension \
-am \

View File

@@ -525,8 +525,9 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
Editor editor;
editor = newEditor("");
editor.assertContextualCompletions("springactcloti",
editor = newEditor("<*>\n");
editor.assertContextualCompletions(ci -> ci.getLabel().contains("spring.activemq.close-timeout"),
"springactcloti<*>",
"spring:\n" +
" activemq:\n" +
" close-timeout: <*>"
@@ -1435,7 +1436,9 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
@Test public void testContentAssistSimple() throws Exception {
defaultTestData();
assertCompletion("port<*>",
Editor editor = newEditor("<*>\n");
editor.assertContextualCompletions(ci -> ci.getLabel().contains("server.port"),
"port<*>",
"server:\n"+
" port: <*>");
assertCompletion(
@@ -1462,6 +1465,21 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
// => nothing
);
}
/**
* https://github.com/spring-projects/sts4/issues/709
*/
@Test public void testGH709() throws Exception {
data("server.port", "java.lang.Integer", null, "Server http port");
Editor editor = newEditor("logging:\r\n"
+ " enabled: true\r\n"
+ "ser<*>");
editor.assertCompletions("logging:\r\n"
+ " enabled: true\r\n"
+ "server:\r\n"
+ " port: <*>");
}
@Test public void testContentAssistNested() throws Exception {
data("server.port", "java.lang.Integer", null, "Server http port");
@@ -1893,7 +1911,8 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
defaultTestData();
//Ensure this test is not trivially passing because of missing test data
assertCompletion(
Editor editor = newEditor("<*>\n");
editor.assertContextualCompletions(ci -> ci.getLabel().contains("server.port"),
"po<*>"
,
"server:\n"+
@@ -2249,7 +2268,9 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
useProject(createPredefinedMavenProject("enums-boot-1.3.2-app"));
data("foo.color", "demo.Color", null, "A foonky colour");
assertCompletion("foo.c<*>",
Editor editor = newEditor("<*>\n");
editor.assertContextualCompletions(ci -> ci.getLabel().equals("foo.color"),
"foo.c<*>",
"foo:\n" +
" color: <*>" //Should complete on same line because enums are 'simple' values.
);
@@ -2393,11 +2414,12 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
);
//Map Enum -> Pojo:
assertCompletions("foo.coldat<*>",
Editor editor = newEditor("<*>\n");
editor.assertContextualCompletions("foo.coldat<*>",
"foo:\n" +
" color-data:\n" +
" <*>");
assertCompletions(
editor.assertContextualCompletions(
"foo:\n" +
" color-data:\n" +
" <*>",
@@ -2415,7 +2437,7 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
" red:\n" +
" <*>"
);
assertCompletions(
editor.assertContextualCompletions(
"foo:\n" +
" color-data:\n" +
" B<*>",
@@ -2426,7 +2448,7 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
" <*>"
);
assertCompletions(
editor.assertContextualCompletions(
"foo:\n" +
" color-data:\n" +
" b<*>",
@@ -2437,7 +2459,7 @@ public class ApplicationYamlEditorTest extends AbstractPropsEditorTest {
" <*>"
);
assertCompletions(
editor.assertContextualCompletions(
"foo:\n" +
" color-data: b<*>",
//=>