fixup! Return the default resolver if the factory URL refers directly to a devfile
parent
1d0388e251
commit
9fe13feb3f
|
|
@ -23,7 +23,7 @@ import java.util.Map;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import org.eclipse.che.api.core.ApiException;
|
||||
import org.eclipse.che.api.factory.server.DefaultFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.RawDevfileUrlFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.ProjectConfigDtoMerger;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.RemoteFactoryUrl;
|
||||
|
|
@ -45,7 +45,7 @@ import org.eclipse.che.api.workspace.shared.dto.devfile.SourceDto;
|
|||
* @author Anatolii Bazko
|
||||
*/
|
||||
@Singleton
|
||||
public class AzureDevOpsFactoryParametersResolver extends DefaultFactoryParameterResolver {
|
||||
public class AzureDevOpsFactoryParametersResolver extends RawDevfileUrlFactoryParameterResolver {
|
||||
|
||||
/** Parser which will allow to check validity of URLs and create objects. */
|
||||
private final AzureDevOpsURLParser azureDevOpsURLParser;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import javax.inject.Inject;
|
|||
import javax.inject.Singleton;
|
||||
import org.eclipse.che.api.core.ApiException;
|
||||
import org.eclipse.che.api.core.BadRequestException;
|
||||
import org.eclipse.che.api.factory.server.DefaultFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.RawDevfileUrlFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.RemoteFactoryUrl;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.URLFactoryBuilder;
|
||||
|
|
@ -43,7 +43,7 @@ import org.eclipse.che.api.workspace.shared.dto.devfile.SourceDto;
|
|||
*/
|
||||
@Singleton
|
||||
public class BitbucketServerAuthorizingFactoryParametersResolver
|
||||
extends DefaultFactoryParameterResolver {
|
||||
extends RawDevfileUrlFactoryParameterResolver {
|
||||
|
||||
/** Parser which will allow to check validity of URLs and create objects. */
|
||||
private final BitbucketServerURLParser bitbucketURLParser;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import javax.inject.Inject;
|
|||
import javax.inject.Singleton;
|
||||
import org.eclipse.che.api.core.ApiException;
|
||||
import org.eclipse.che.api.core.BadRequestException;
|
||||
import org.eclipse.che.api.factory.server.DefaultFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.RawDevfileUrlFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.ProjectConfigDtoMerger;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.RemoteFactoryUrl;
|
||||
|
|
@ -38,7 +38,7 @@ import org.eclipse.che.api.workspace.shared.dto.devfile.ProjectDto;
|
|||
|
||||
/** Provides Factory Parameters resolver for bitbucket repositories. */
|
||||
@Singleton
|
||||
public class BitbucketFactoryParametersResolver extends DefaultFactoryParameterResolver {
|
||||
public class BitbucketFactoryParametersResolver extends RawDevfileUrlFactoryParameterResolver {
|
||||
|
||||
/** Parser which will allow to check validity of URLs and create objects. */
|
||||
private final BitbucketURLParser bitbucketURLParser;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ import java.util.Map;
|
|||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import org.eclipse.che.api.core.ApiException;
|
||||
import org.eclipse.che.api.factory.server.DefaultFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.RawDevfileUrlFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.RemoteFactoryUrl;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.URLFactoryBuilder;
|
||||
|
|
@ -39,7 +39,7 @@ import org.eclipse.che.api.workspace.shared.dto.devfile.SourceDto;
|
|||
* @author Anatolii Bazko
|
||||
*/
|
||||
@Singleton
|
||||
public class GitSshFactoryParametersResolver extends DefaultFactoryParameterResolver {
|
||||
public class GitSshFactoryParametersResolver extends RawDevfileUrlFactoryParameterResolver {
|
||||
|
||||
private final GitSshURLParser gitSshURLParser;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import javax.inject.Named;
|
|||
import javax.inject.Singleton;
|
||||
import org.eclipse.che.api.core.ApiException;
|
||||
import org.eclipse.che.api.core.BadRequestException;
|
||||
import org.eclipse.che.api.factory.server.DefaultFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.RawDevfileUrlFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.ProjectConfigDtoMerger;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.RemoteFactoryUrl;
|
||||
|
|
@ -44,7 +44,7 @@ import org.eclipse.che.commons.annotation.Nullable;
|
|||
* @author Florent Benoit
|
||||
*/
|
||||
@Singleton
|
||||
public class GithubFactoryParametersResolver extends DefaultFactoryParameterResolver {
|
||||
public class GithubFactoryParametersResolver extends RawDevfileUrlFactoryParameterResolver {
|
||||
|
||||
/** Parser which will allow to check validity of URLs and create objects. */
|
||||
private final GithubURLParser githubUrlParser;
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import javax.inject.Inject;
|
|||
import javax.inject.Singleton;
|
||||
import org.eclipse.che.api.core.ApiException;
|
||||
import org.eclipse.che.api.core.BadRequestException;
|
||||
import org.eclipse.che.api.factory.server.DefaultFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.RawDevfileUrlFactoryParameterResolver;
|
||||
import org.eclipse.che.api.factory.server.scm.PersonalAccessTokenManager;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.RemoteFactoryUrl;
|
||||
import org.eclipse.che.api.factory.server.urlfactory.URLFactoryBuilder;
|
||||
|
|
@ -41,7 +41,7 @@ import org.eclipse.che.api.workspace.shared.dto.devfile.SourceDto;
|
|||
* @author Max Shaposhnyk
|
||||
*/
|
||||
@Singleton
|
||||
public class GitlabFactoryParametersResolver extends DefaultFactoryParameterResolver {
|
||||
public class GitlabFactoryParametersResolver extends RawDevfileUrlFactoryParameterResolver {
|
||||
|
||||
private final GitlabUrlParser gitlabURLParser;
|
||||
private final PersonalAccessTokenManager personalAccessTokenManager;
|
||||
|
|
|
|||
|
|
@ -175,7 +175,7 @@ public class FactoryService extends Service {
|
|||
@SuppressWarnings("unused")
|
||||
private Set<FactoryParametersResolver> specificFactoryParametersResolvers;
|
||||
|
||||
@Inject private DefaultFactoryParameterResolver defaultFactoryResolver;
|
||||
@Inject private RawDevfileUrlFactoryParameterResolver defaultFactoryResolver;
|
||||
|
||||
/**
|
||||
* Provides a suitable resolver for the given parameters. If there is no at least one resolver
|
||||
|
|
|
|||
|
|
@ -42,12 +42,11 @@ import org.eclipse.che.api.workspace.shared.dto.devfile.DevfileDto;
|
|||
import org.eclipse.che.api.workspace.shared.dto.devfile.ProjectDto;
|
||||
|
||||
/**
|
||||
* Default {@link FactoryParametersResolver} implementation. Tries to resolve factory based on
|
||||
* provided parameters. Presumes url parameter as direct URL to a devfile content. Extracts and
|
||||
* applies devfile values override parameters.
|
||||
* {@link FactoryParametersResolver} implementation to resolve factory based on url parameter as a
|
||||
* direct URL to a devfile content. Extracts and applies devfile values override parameters.
|
||||
*/
|
||||
@Singleton
|
||||
public class DefaultFactoryParameterResolver implements FactoryParametersResolver {
|
||||
public class RawDevfileUrlFactoryParameterResolver implements FactoryParametersResolver {
|
||||
|
||||
private static final String OVERRIDE_PREFIX = "override.";
|
||||
|
||||
|
|
@ -56,7 +55,7 @@ public class DefaultFactoryParameterResolver implements FactoryParametersResolve
|
|||
@Inject private DevfileFilenamesProvider devfileFilenamesProvider;
|
||||
|
||||
@Inject
|
||||
public DefaultFactoryParameterResolver(
|
||||
public RawDevfileUrlFactoryParameterResolver(
|
||||
URLFactoryBuilder urlFactoryBuilder, URLFetcher urlFetcher) {
|
||||
this.urlFactoryBuilder = urlFactoryBuilder;
|
||||
this.urlFetcher = urlFetcher;
|
||||
|
|
@ -107,7 +107,7 @@ public class FactoryServiceTest {
|
|||
@Mock private PreferenceManager preferenceManager;
|
||||
@Mock private UserManager userManager;
|
||||
@Mock private AdditionalFilenamesProvider additionalFilenamesProvider;
|
||||
@Mock private DefaultFactoryParameterResolver defaultFactoryParameterResolver;
|
||||
@Mock private RawDevfileUrlFactoryParameterResolver rawDevfileUrlFactoryParameterResolver;
|
||||
@Mock private PersonalAccessTokenManager personalAccessTokenManager;
|
||||
|
||||
@InjectMocks private FactoryParametersResolverHolder factoryParametersResolverHolder;
|
||||
|
|
@ -153,7 +153,7 @@ public class FactoryServiceTest {
|
|||
@Test
|
||||
public void shouldThrowBadRequestWhenNoURLParameterGiven() throws Exception {
|
||||
final FactoryParametersResolverHolder dummyHolder = spy(factoryParametersResolverHolder);
|
||||
doReturn(defaultFactoryParameterResolver)
|
||||
doReturn(rawDevfileUrlFactoryParameterResolver)
|
||||
.when(dummyHolder)
|
||||
.getFactoryParametersResolver(anyMap());
|
||||
// service instance with dummy holder
|
||||
|
|
@ -180,7 +180,7 @@ public class FactoryServiceTest {
|
|||
@Test
|
||||
public void checkValidateResolver() throws Exception {
|
||||
final FactoryParametersResolverHolder dummyHolder = spy(factoryParametersResolverHolder);
|
||||
doReturn(defaultFactoryParameterResolver)
|
||||
doReturn(rawDevfileUrlFactoryParameterResolver)
|
||||
.when(dummyHolder)
|
||||
.getFactoryParametersResolver(anyMap());
|
||||
// service instance with dummy holder
|
||||
|
|
@ -199,7 +199,7 @@ public class FactoryServiceTest {
|
|||
newDto(FactoryDto.class).withV(CURRENT_VERSION).withName("matchingResolverFactory");
|
||||
|
||||
// accept resolver
|
||||
when(defaultFactoryParameterResolver.createFactory(anyMap())).thenReturn(expectFactory);
|
||||
when(rawDevfileUrlFactoryParameterResolver.createFactory(anyMap())).thenReturn(expectFactory);
|
||||
|
||||
// when
|
||||
final Map<String, String> map = new HashMap<>();
|
||||
|
|
@ -217,7 +217,7 @@ public class FactoryServiceTest {
|
|||
|
||||
// check we call resolvers
|
||||
dummyHolder.getFactoryParametersResolver(anyMap());
|
||||
verify(defaultFactoryParameterResolver).createFactory(anyMap());
|
||||
verify(rawDevfileUrlFactoryParameterResolver).createFactory(anyMap());
|
||||
|
||||
// check we call validator
|
||||
verify(acceptValidator).validateOnAccept(any());
|
||||
|
|
@ -270,7 +270,7 @@ public class FactoryServiceTest {
|
|||
public void shouldReturnDefaultFactoryParameterResolver() throws Exception {
|
||||
// given
|
||||
Map<String, String> params = singletonMap(URL_PARAMETER_NAME, "https://host/path/devfile.yaml");
|
||||
when(defaultFactoryParameterResolver.accept(eq(params))).thenReturn(true);
|
||||
when(rawDevfileUrlFactoryParameterResolver.accept(eq(params))).thenReturn(true);
|
||||
|
||||
// when
|
||||
FactoryParametersResolver factoryParametersResolver =
|
||||
|
|
@ -281,7 +281,7 @@ public class FactoryServiceTest {
|
|||
factoryParametersResolver
|
||||
.getClass()
|
||||
.getName()
|
||||
.startsWith(DefaultFactoryParameterResolver.class.getName()));
|
||||
.startsWith(RawDevfileUrlFactoryParameterResolver.class.getName()));
|
||||
}
|
||||
|
||||
private FactoryImpl createFactory() {
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ import org.testng.annotations.Listeners;
|
|||
import org.testng.annotations.Test;
|
||||
|
||||
@Listeners(value = {MockitoTestNGListener.class})
|
||||
public class DefaultFactoryParameterResolverTest {
|
||||
public class RawDevfileUrlFactoryParameterResolverTest {
|
||||
|
||||
private static final String DEVFILE =
|
||||
""
|
||||
|
|
@ -70,7 +70,7 @@ public class DefaultFactoryParameterResolverTest {
|
|||
private final DevfileFilenamesProvider devfileFilenamesProvider =
|
||||
new DevfileFilenamesProvider("devfile.yaml, .devfile.yaml");
|
||||
|
||||
@InjectMocks private DefaultFactoryParameterResolver defaultFactoryParameterResolver;
|
||||
@InjectMocks private RawDevfileUrlFactoryParameterResolver rawDevfileUrlFactoryParameterResolver;
|
||||
|
||||
@Test
|
||||
public void shouldResolveRelativeFiles() throws Exception {
|
||||
|
|
@ -94,8 +94,8 @@ public class DefaultFactoryParameterResolverTest {
|
|||
new URLFactoryBuilder(
|
||||
"editor", "plugin", false, devfileParser, new DevfileVersionDetector());
|
||||
|
||||
DefaultFactoryParameterResolver res =
|
||||
new DefaultFactoryParameterResolver(factoryBuilder, urlFetcher);
|
||||
RawDevfileUrlFactoryParameterResolver res =
|
||||
new RawDevfileUrlFactoryParameterResolver(factoryBuilder, urlFetcher);
|
||||
|
||||
// set up our factory with the location of our devfile that is referencing our localfile
|
||||
Map<String, String> factoryParameters = new HashMap<>();
|
||||
|
|
@ -116,8 +116,8 @@ public class DefaultFactoryParameterResolverTest {
|
|||
URLFactoryBuilder urlFactoryBuilder = mock(URLFactoryBuilder.class);
|
||||
URLFetcher urlFetcher = mock(URLFetcher.class);
|
||||
|
||||
DefaultFactoryParameterResolver res =
|
||||
new DefaultFactoryParameterResolver(urlFactoryBuilder, urlFetcher);
|
||||
RawDevfileUrlFactoryParameterResolver res =
|
||||
new RawDevfileUrlFactoryParameterResolver(urlFactoryBuilder, urlFetcher);
|
||||
|
||||
Map<String, String> factoryParameters = new HashMap<>();
|
||||
factoryParameters.put(URL_PARAMETER_NAME, "http://myloc/devfile");
|
||||
|
|
@ -147,8 +147,8 @@ public class DefaultFactoryParameterResolverTest {
|
|||
URLFactoryBuilder urlFactoryBuilder = mock(URLFactoryBuilder.class);
|
||||
URLFetcher urlFetcher = mock(URLFetcher.class);
|
||||
|
||||
DefaultFactoryParameterResolver res =
|
||||
new DefaultFactoryParameterResolver(urlFactoryBuilder, urlFetcher);
|
||||
RawDevfileUrlFactoryParameterResolver res =
|
||||
new RawDevfileUrlFactoryParameterResolver(urlFactoryBuilder, urlFetcher);
|
||||
|
||||
Map<String, String> factoryParameters = new HashMap<>();
|
||||
factoryParameters.put(URL_PARAMETER_NAME, url);
|
||||
|
|
@ -171,13 +171,15 @@ public class DefaultFactoryParameterResolverTest {
|
|||
throws NoSuchFieldException, IllegalAccessException {
|
||||
// given
|
||||
Field field =
|
||||
defaultFactoryParameterResolver.getClass().getDeclaredField("devfileFilenamesProvider");
|
||||
rawDevfileUrlFactoryParameterResolver
|
||||
.getClass()
|
||||
.getDeclaredField("devfileFilenamesProvider");
|
||||
field.setAccessible(true);
|
||||
field.set(defaultFactoryParameterResolver, devfileFilenamesProvider);
|
||||
field.set(rawDevfileUrlFactoryParameterResolver, devfileFilenamesProvider);
|
||||
|
||||
// when
|
||||
boolean result =
|
||||
defaultFactoryParameterResolver.accept(
|
||||
rawDevfileUrlFactoryParameterResolver.accept(
|
||||
Collections.singletonMap(URL_PARAMETER_NAME, "https://host/path/" + devfileName));
|
||||
|
||||
// then
|
||||
Loading…
Reference in New Issue