use simplename of namespace strategy, to simplify i18n

This commit is contained in:
Sebastian Sdorra
2019-03-11 14:46:35 +01:00
parent 3660ac9fd2
commit d31ef73b88
7 changed files with 95 additions and 8 deletions

View File

@@ -185,7 +185,7 @@ public class ScmConfiguration implements Configuration {
private boolean enabledXsrfProtection = true;
@XmlElement(name = "default-namespace-strategy")
private String defaultNamespaceStrategy = "sonia.scm.repository.UsernameNamespaceStrategy";
private String defaultNamespaceStrategy = "UsernameNamespaceStrategy";
/**

View File

@@ -59,7 +59,7 @@ public class NamespaceStrategyResource {
}
private String strategyAsString(NamespaceStrategy namespaceStrategy) {
return namespaceStrategy.getClass().getName();
return namespaceStrategy.getClass().getSimpleName();
}
private List<String> collectStrategyNames() {

View File

@@ -1,5 +1,7 @@
package sonia.scm.repository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sonia.scm.config.ScmConfiguration;
import javax.inject.Inject;
@@ -8,6 +10,8 @@ import java.util.Set;
public class NamespaceStrategyProvider implements Provider<NamespaceStrategy> {
private static final Logger LOG = LoggerFactory.getLogger(NamespaceStrategyProvider.class);
private final Set<NamespaceStrategy> strategies;
private final ScmConfiguration scmConfiguration;
@@ -22,11 +26,13 @@ public class NamespaceStrategyProvider implements Provider<NamespaceStrategy> {
String namespaceStrategy = scmConfiguration.getDefaultNamespaceStrategy();
for (NamespaceStrategy s : this.strategies) {
if (s.getClass().getCanonicalName().equals(namespaceStrategy)) {
if (s.getClass().getSimpleName().equals(namespaceStrategy)) {
return s;
}
}
return null;
LOG.warn("could not find namespace strategy {}, using default strategy", namespaceStrategy);
return new UsernameNamespaceStrategy();
}
}

View File

@@ -143,5 +143,11 @@
"displayName": "Ungültige Eingabe",
"description": "Die eingegebenen Daten konnten nicht validiert werden. Bitte korrigieren Sie die Eingaben und senden Sie sie erneut."
}
},
"namespaceStrategies": {
"sonia.scm.repository.UsernameNamespaceStrategy": "Benutzername",
"sonia.scm.repository.CustomNamespaceStrategy": "Benutzerdefiniert",
"sonia.scm.repository.CurrentYearNamespaceStrategy": "Aktuelles Jahr",
"sonia.scm.repository.RepositoryTypeNamespaceStrategy": "Repository Typ"
}
}

View File

@@ -143,5 +143,11 @@
"displayName": "Illegal input",
"description": "The values could not be validated. Please correct your input and try again."
}
},
"namespaceStrategies": {
"UsernameNamespaceStrategy": "Username",
"CustomNamespaceStrategy": "Custom",
"CurrentYearNamespaceStrategy": "Current year",
"RepositoryTypeNamespaceStrategy": "Repository type"
}
}

View File

@@ -34,11 +34,11 @@ class NamespaceStrategyResourceTest {
NamespaceStrategyResource resource = new NamespaceStrategyResource(namespaceStrategies, current);
NamespaceStrategiesDto dto = resource.get(uriInfo);
assertThat(dto.getCurrent()).isEqualTo(MegaNamespaceStrategy.class.getName());
assertThat(dto.getCurrent()).isEqualTo(MegaNamespaceStrategy.class.getSimpleName());
assertThat(dto.getAvailable()).contains(
AwesomeNamespaceStrategy.class.getName(),
SuperNamespaceStrategy.class.getName(),
MegaNamespaceStrategy.class.getName()
AwesomeNamespaceStrategy.class.getSimpleName(),
SuperNamespaceStrategy.class.getSimpleName(),
MegaNamespaceStrategy.class.getSimpleName()
);
assertThat(dto.getLinks().getLinkBy("self").get().getHref()).isEqualTo("/namespace-strategies");
}

View File

@@ -0,0 +1,69 @@
package sonia.scm.repository;
import org.junit.jupiter.api.Test;
import sonia.scm.config.ScmConfiguration;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedHashSet;
import java.util.Set;
import static org.assertj.core.api.Assertions.assertThat;
class NamespaceStrategyProviderTest {
@Test
void shouldReturnConfiguredStrategy() {
Set<NamespaceStrategy> strategies = allStrategiesAsSet();
ScmConfiguration configuration = new ScmConfiguration();
configuration.setDefaultNamespaceStrategy("Arthur");
NamespaceStrategyProvider provider = new NamespaceStrategyProvider(strategies, configuration);
NamespaceStrategy strategy = provider.get();
assertThat(strategy).isInstanceOf(Arthur.class);
}
@Test
void shouldReturnUsernameStrategyForUnknown() {
Set<NamespaceStrategy> strategies = Collections.emptySet();
ScmConfiguration configuration = new ScmConfiguration();
configuration.setDefaultNamespaceStrategy("Arthur");
NamespaceStrategyProvider provider = new NamespaceStrategyProvider(strategies, configuration);
NamespaceStrategy strategy = provider.get();
assertThat(strategy).isInstanceOf(UsernameNamespaceStrategy.class);
}
private LinkedHashSet<NamespaceStrategy> allStrategiesAsSet() {
return new LinkedHashSet<>(Arrays.asList(new Trillian(), new Zaphod(), new Arthur()));
}
private static class Trillian implements NamespaceStrategy{
@Override
public String createNamespace(Repository repository) {
return "trillian";
}
}
private static class Zaphod implements NamespaceStrategy {
@Override
public String createNamespace(Repository repository) {
return "zaphod";
}
}
private static class Arthur implements NamespaceStrategy {
@Override
public String createNamespace(Repository repository) {
return "arthur";
}
}
}