diff --git a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java index fcf27f6a92..29b2babd2a 100644 --- a/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java +++ b/scm-core/src/main/java/sonia/scm/repository/api/RepositoryService.java @@ -39,6 +39,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sonia.scm.cache.CacheManager; +import sonia.scm.repository.Feature; import sonia.scm.repository.PreProcessorUtil; import sonia.scm.repository.Repository; import sonia.scm.repository.spi.RepositoryServiceProvider; @@ -295,6 +296,19 @@ public final class RepositoryService implements Closeable return provider.getSupportedCommands().contains(command); } + /** + * Returns true if the feature is supported by the repository service. + * + * + * @param feature feature + * + * @return true if the feature is supported + */ + public boolean isSupported(Feature feature) + { + return provider.getSupportedFeatures().contains(feature); + } + //~--- fields --------------------------------------------------------------- /** cache manager */ diff --git a/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java b/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java index e75b0e9aea..a87f24f460 100644 --- a/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java +++ b/scm-core/src/main/java/sonia/scm/repository/spi/RepositoryServiceProvider.java @@ -35,6 +35,7 @@ package sonia.scm.repository.spi; //~--- non-JDK imports -------------------------------------------------------- +import sonia.scm.repository.Feature; import sonia.scm.repository.api.Command; import sonia.scm.repository.api.CommandNotSupportedException; @@ -43,6 +44,7 @@ import sonia.scm.repository.api.CommandNotSupportedException; import java.io.Closeable; import java.io.IOException; +import java.util.Collections; import java.util.Set; /** @@ -146,6 +148,17 @@ public abstract class RepositoryServiceProvider implements Closeable throw new CommandNotSupportedException(Command.LOG); } + /** + * Method description + * + * + * @return + */ + public Set getSupportedFeatures() + { + return Collections.EMPTY_SET; + } + /** * Method description * diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java index 80a2b13ef4..eabd69bd3a 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java @@ -72,9 +72,6 @@ import java.io.OutputStream; import java.text.MessageFormat; -import java.util.EnumSet; -import java.util.Set; - import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; @@ -101,15 +98,11 @@ public class HgRepositoryHandler /** Field description */ public static final String TYPE_NAME = "hg"; - /** Field description */ - private static final Set SUPPORTED_FEATURES = - EnumSet.of(Feature.COMBINED_DEFAULT_BRANCH); - /** Field description */ public static final Type TYPE = new RepositoryType(TYPE_NAME, TYPE_DISPLAYNAME, HgRepositoryServiceProvider.COMMANDS, - SUPPORTED_FEATURES); + HgRepositoryServiceProvider.FEATURES); /** the logger for HgRepositoryHandler */ private static final Logger logger = diff --git a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java index 163be0c119..f9356d5236 100644 --- a/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java +++ b/scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/spi/HgRepositoryServiceProvider.java @@ -39,6 +39,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.io.Closeables; import com.google.inject.Provider; +import sonia.scm.repository.Feature; import sonia.scm.repository.HgContext; import sonia.scm.repository.HgRepositoryHandler; import sonia.scm.repository.Repository; @@ -49,6 +50,7 @@ import sonia.scm.repository.api.Command; import java.io.File; import java.io.IOException; +import java.util.EnumSet; import java.util.Set; /** @@ -59,11 +61,14 @@ public class HgRepositoryServiceProvider extends RepositoryServiceProvider { /** Field description */ - public static final Set COMMANDS = ImmutableSet.of(Command.BLAME, - Command.BROWSE, Command.CAT, - Command.DIFF, Command.LOG, - Command.TAGS, - Command.BRANCHES); + public static final Set COMMANDS = EnumSet.of(Command.BLAME, + Command.BROWSE, Command.CAT, + Command.DIFF, Command.LOG, + Command.TAGS, Command.BRANCHES); + + /** Field description */ + public static final Set FEATURES = + EnumSet.of(Feature.COMBINED_DEFAULT_BRANCH); //~--- constructors --------------------------------------------------------- @@ -187,6 +192,18 @@ public class HgRepositoryServiceProvider extends RepositoryServiceProvider return COMMANDS; } + /** + * Method description + * + * + * @return + */ + @Override + public Set getSupportedFeatures() + { + return FEATURES; + } + /** * Method description *