Commits

Sebastian Sdorra committed bf0396f

added features for specific repository types

Comments (0)

Files changed (3)

scm-core/src/main/java/sonia/scm/repository/Feature.java

+/**
+ * Copyright (c) 2010, Sebastian Sdorra All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer. 2. Redistributions in
+ * binary form must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution. 3. Neither the name of SCM-Manager;
+ * nor the names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * http://bitbucket.org/sdorra/scm-manager
+ *
+ */
+
+
+
+package sonia.scm.repository;
+
+/**
+ * Features which are supported by a {@link Repository}.
+ *
+ * @author Sebastian Sdorra
+ * @since 1.25
+ */
+public enum Feature
+{
+
+  /**
+   * The default branch of the repository is a combined branch of all
+   * repository branches.
+   */
+  COMBINED_DEFAULT_BRANCH
+}

scm-core/src/main/java/sonia/scm/repository/RepositoryType.java

  */
 
 
+
 package sonia.scm.repository;
 
 //~--- non-JDK imports --------------------------------------------------------
 
 //~--- JDK imports ------------------------------------------------------------
 
+import java.util.Collections;
 import java.util.Set;
 
 /**
   public RepositoryType(String name, String displayName,
     Set<Command> supportedCommands)
   {
+    this(name, displayName, supportedCommands, Collections.EMPTY_SET);
+  }
+
+  /**
+   * Constructs a new {@link RepositoryType} object.
+   *
+   *
+   * @param name name of the type
+   * @param displayName display name of the type
+   * @param supportedCommands supported commands of the type
+   * @param supportedFeatures supported features of the type
+   *
+   * @since 1.25
+   */
+  public RepositoryType(String name, String displayName,
+    Set<Command> supportedCommands, Set<Feature> supportedFeatures)
+  {
     super(name, displayName);
     this.supportedCommands = supportedCommands;
+    this.supportedFeatures = supportedFeatures;
   }
 
   //~--- get methods ----------------------------------------------------------
 
   /**
-   * Returns a set of commands, which are supported of the repository type.
+   * Returns a set of commands, which are supported by the repository type.
    *
    *
    * @return set of supported commands
     return supportedCommands;
   }
 
+  /**
+   * Returns a set of features, which are supported by the repository type.
+   *
+   *
+   * @return set of supported features
+   * @since 1.25
+   */
+  public Set<Feature> getSupportedFeatures()
+  {
+    return supportedFeatures;
+  }
+
   //~--- fields ---------------------------------------------------------------
 
   /** set of supported commands */
   private Set<Command> supportedCommands;
+
+  /** set of supported features */
+  private Set<Feature> supportedFeatures;
 }

scm-plugins/scm-hg-plugin/src/main/java/sonia/scm/repository/HgRepositoryHandler.java

 
 import java.text.MessageFormat;
 
+import java.util.EnumSet;
+import java.util.Set;
+
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 
   public static final String TYPE_NAME = "hg";
 
   /** Field description */
+  private static final Set<Feature> SUPPORTED_FEATURES =
+    EnumSet.of(Feature.COMBINED_DEFAULT_BRANCH);
+
+  /** Field description */
   public static final Type TYPE = new RepositoryType(TYPE_NAME,
                                     TYPE_DISPLAYNAME,
-                                    HgRepositoryServiceProvider.COMMANDS);
+                                    HgRepositoryServiceProvider.COMMANDS,
+                                    SUPPORTED_FEATURES);
 
   /** the logger for HgRepositoryHandler */
   private static final Logger logger =