diff --git a/pom.xml b/pom.xml
index 17bea18745..1a748c519e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -662,7 +662,7 @@
che-core-api-auth-bitbucket
${che.version}
-
+
org.eclipse.che.core
che-core-api-auth-github
${che.version}
@@ -1409,7 +1409,6 @@
${junit.junit.version}
test
-
org.apache.maven.plugin-testing
maven-plugin-testing-harness
diff --git a/wsmaster/che-core-api-factory-azure-devops/pom.xml b/wsmaster/che-core-api-factory-azure-devops/pom.xml
index 23630f79d3..32965f17b0 100644
--- a/wsmaster/che-core-api-factory-azure-devops/pom.xml
+++ b/wsmaster/che-core-api-factory-azure-devops/pom.xml
@@ -78,6 +78,10 @@
org.eclipse.che.core
che-core-api-workspace
+
+ org.eclipse.che.core
+ che-core-api-workspace-shared
+
org.eclipse.che.core
che-core-commons-lang
diff --git a/wsmaster/che-core-api-factory-azure-devops/src/main/java/org/eclipse/che/api/factory/server/azure/devops/AzureDevOpsFactoryParametersResolver.java b/wsmaster/che-core-api-factory-azure-devops/src/main/java/org/eclipse/che/api/factory/server/azure/devops/AzureDevOpsFactoryParametersResolver.java
index 05b1b6de2b..2e42153b6f 100644
--- a/wsmaster/che-core-api-factory-azure-devops/src/main/java/org/eclipse/che/api/factory/server/azure/devops/AzureDevOpsFactoryParametersResolver.java
+++ b/wsmaster/che-core-api-factory-azure-devops/src/main/java/org/eclipse/che/api/factory/server/azure/devops/AzureDevOpsFactoryParametersResolver.java
@@ -16,7 +16,9 @@ import static org.eclipse.che.api.factory.shared.Constants.URL_PARAMETER_NAME;
import static org.eclipse.che.dto.server.DtoFactory.newDto;
import static org.eclipse.che.security.oauth1.OAuthAuthenticationService.ERROR_QUERY_NAME;
+import com.google.common.base.Strings;
import jakarta.validation.constraints.NotNull;
+import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -32,6 +34,10 @@ import org.eclipse.che.api.factory.shared.dto.FactoryMetaDto;
import org.eclipse.che.api.factory.shared.dto.FactoryVisitor;
import org.eclipse.che.api.factory.shared.dto.ScmInfoDto;
import org.eclipse.che.api.workspace.server.devfile.URLFetcher;
+import org.eclipse.che.api.workspace.shared.dto.ProjectConfigDto;
+import org.eclipse.che.api.workspace.shared.dto.SourceStorageDto;
+import org.eclipse.che.api.workspace.shared.dto.devfile.ProjectDto;
+import org.eclipse.che.api.workspace.shared.dto.devfile.SourceDto;
/**
* Provides Factory Parameters resolver for Azure DevOps repositories.
@@ -113,8 +119,40 @@ public class AzureDevOpsFactoryParametersResolver extends DefaultFactoryParamete
@Override
public FactoryDto visit(FactoryDto factory) {
- // Should never happen
- throw new UnsupportedOperationException();
+ if (factory.getWorkspace() != null) {
+ return projectConfigDtoMerger.merge(
+ factory,
+ () -> {
+ // Compute project configuration
+ return newDto(ProjectConfigDto.class)
+ .withSource(buildWorkspaceConfigSource(azureDevOpsUrl))
+ .withName(azureDevOpsUrl.getRepository())
+ .withPath("/".concat(azureDevOpsUrl.getRepository()));
+ });
+ } else if (factory.getDevfile() == null) {
+ factory.setDevfile(urlFactoryBuilder.buildDefaultDevfile(azureDevOpsUrl.getRepository()));
+ }
+
+ updateProjects(
+ factory.getDevfile(),
+ () ->
+ newDto(ProjectDto.class)
+ .withSource(
+ newDto(SourceDto.class)
+ .withLocation(azureDevOpsUrl.getRepositoryLocation())
+ .withType("git")
+ .withBranch(azureDevOpsUrl.getBranch())
+ .withTag(azureDevOpsUrl.getTag()))
+ .withName(azureDevOpsUrl.getRepository()),
+ project -> {
+ final String location = project.getSource().getLocation();
+ if (location.equals(azureDevOpsUrl.getRepositoryLocation())) {
+ project.getSource().setBranch(azureDevOpsUrl.getBranch());
+ project.getSource().setTag(azureDevOpsUrl.getTag());
+ }
+ });
+
+ return factory;
}
}
@@ -122,4 +160,19 @@ public class AzureDevOpsFactoryParametersResolver extends DefaultFactoryParamete
public RemoteFactoryUrl parseFactoryUrl(String factoryUrl) throws ApiException {
return azureDevOpsURLParser.parse(factoryUrl);
}
+
+ private SourceStorageDto buildWorkspaceConfigSource(AzureDevOpsUrl azureDevOpsUrl) {
+ Map parameters = new HashMap<>(1);
+ if (!Strings.isNullOrEmpty(azureDevOpsUrl.getBranch())) {
+ parameters.put("branch", azureDevOpsUrl.getBranch());
+ }
+ if (!Strings.isNullOrEmpty(azureDevOpsUrl.getTag())) {
+ parameters.put("tag", azureDevOpsUrl.getTag());
+ }
+
+ return newDto(SourceStorageDto.class)
+ .withLocation(azureDevOpsUrl.getRepositoryLocation())
+ .withType("git")
+ .withParameters(parameters);
+ }
}