Browse Source

Change enum name and unit test RSS tag queries

tags/v1.6.0
James Moger 10 years ago
parent
commit
9ff0c16b05

+ 2
- 0
releases.moxie View File

changes: ~ changes: ~
additions: additions:
- Add FORK_REPOSITORY RPC request type (issue-371, pr-161, ticket-65) - Add FORK_REPOSITORY RPC request type (issue-371, pr-161, ticket-65)
- Add object type (ot) parameter for RSS queries to retrieve tag details (pr-165, ticket-66)
dependencyChanges: ~ dependencyChanges: ~
contributors: contributors:
- Manisha Gayathri - Manisha Gayathri
- Gerard Smyth
} }


# #

+ 3
- 3
src/main/java/com/gitblit/Constants.java View File

/** /**
* Enumeration of the feed content object types. * Enumeration of the feed content object types.
*/ */
public static enum FeedContentObjectType {
public static enum FeedObjectType {
COMMIT, TAG; COMMIT, TAG;
public static FeedContentObjectType forName(String name) {
for (FeedContentObjectType type : values()) {
public static FeedObjectType forName(String name) {
for (FeedObjectType type : values()) {
if (type.name().equalsIgnoreCase(name)) { if (type.name().equalsIgnoreCase(name)) {
return type; return type;
} }

+ 3
- 3
src/main/java/com/gitblit/servlet/SyndicationServlet.java View File

} }
} }
Constants.FeedContentObjectType objectType = Constants.FeedContentObjectType.COMMIT;
Constants.FeedObjectType objectType = Constants.FeedObjectType.COMMIT;
if (!StringUtils.isEmpty(request.getParameter("ot"))) { if (!StringUtils.isEmpty(request.getParameter("ot"))) {
Constants.FeedContentObjectType type = Constants.FeedContentObjectType.forName(request.getParameter("ot"));
Constants.FeedObjectType type = Constants.FeedObjectType.forName(request.getParameter("ot"));
if (type != null) { if (type != null) {
objectType = type; objectType = type;
} }
feedDescription = model.description; feedDescription = model.description;
} }
if (objectType == Constants.FeedContentObjectType.TAG) {
if (objectType == Constants.FeedObjectType.TAG) {
String urlPattern; String urlPattern;
if (mountParameters) { if (mountParameters) {

+ 57
- 0
src/main/java/com/gitblit/utils/SyndicationUtils.java View File

import java.util.List; import java.util.List;
import com.gitblit.Constants; import com.gitblit.Constants;
import com.gitblit.Constants.FeedObjectType;
import com.gitblit.GitBlitException; import com.gitblit.GitBlitException;
import com.gitblit.models.FeedEntryModel; import com.gitblit.models.FeedEntryModel;
import com.sun.syndication.feed.synd.SyndCategory; import com.sun.syndication.feed.synd.SyndCategory;
*/ */
public static List<FeedEntryModel> readFeed(String url, String repository, String branch, public static List<FeedEntryModel> readFeed(String url, String repository, String branch,
int numberOfEntries, int page, String username, char[] password) throws IOException { int numberOfEntries, int page, String username, char[] password) throws IOException {
return readFeed(url, repository, branch, FeedObjectType.COMMIT, numberOfEntries,
page, username, password);
}
/**
* Reads tags from the specified repository.
*
* @param url
* the url of the Gitblit server
* @param repository
* the repository name
* @param branch
* the branch name (optional)
* @param numberOfEntries
* the number of entries to retrieve. if <= 0 the server default
* is used.
* @param page
* 0-indexed. used to paginate the results.
* @param username
* @param password
* @return a list of SyndicationModel entries
* @throws {@link IOException}
*/
public static List<FeedEntryModel> readTags(String url, String repository,
int numberOfEntries, int page, String username, char[] password) throws IOException {
return readFeed(url, repository, null, FeedObjectType.TAG, numberOfEntries,
page, username, password);
}
/**
* Reads a Gitblit RSS feed.
*
* @param url
* the url of the Gitblit server
* @param repository
* the repository name
* @param branch
* the branch name (optional)
* @param objectType
* the object type to return (optional, COMMIT assummed)
* @param numberOfEntries
* the number of entries to retrieve. if <= 0 the server default
* is used.
* @param page
* 0-indexed. used to paginate the results.
* @param username
* @param password
* @return a list of SyndicationModel entries
* @throws {@link IOException}
*/
private static List<FeedEntryModel> readFeed(String url, String repository, String branch,
FeedObjectType objectType, int numberOfEntries, int page, String username,
char[] password) throws IOException {
// build feed url // build feed url
List<String> parameters = new ArrayList<String>(); List<String> parameters = new ArrayList<String>();
if (numberOfEntries > 0) { if (numberOfEntries > 0) {
if (!StringUtils.isEmpty(branch)) { if (!StringUtils.isEmpty(branch)) {
parameters.add("h=" + branch); parameters.add("h=" + branch);
} }
if (objectType != null) {
parameters.add("ot=" + objectType.name());
}
return readFeed(url, parameters, repository, branch, username, password); return readFeed(url, parameters, repository, branch, username, password);
} }

+ 1
- 0
src/site/rpc.mkd View File

<tr><th>url parameter</th><th>default</th><th>description</th></tr> <tr><th>url parameter</th><th>default</th><th>description</th></tr>
<tr><td colspan='3'><b>standard query</b></td></tr> <tr><td colspan='3'><b>standard query</b></td></tr>
<tr><td><em>repository</em></td><td><em>required</em></td><td>repository name is part of the url (see examples below)</td></tr> <tr><td><em>repository</em></td><td><em>required</em></td><td>repository name is part of the url (see examples below)</td></tr>
<tr><td>ot=</td><td><em>optional</em><br/>default: COMMIT</td><td>object type to return in results. COMMIT or TAG</td></tr>
<tr><td>h=</td><td><em>optional</em><br/>default: HEAD</td><td>starting branch, ref, or commit id</td></tr> <tr><td>h=</td><td><em>optional</em><br/>default: HEAD</td><td>starting branch, ref, or commit id</td></tr>
<tr><td>l=</td><td><em>optional</em><br/>default: web.syndicationEntries</td><td>maximum return count</td></tr> <tr><td>l=</td><td><em>optional</em><br/>default: web.syndicationEntries</td><td>maximum return count</td></tr>
<tr><td>pg=</td><td><em>optional</em><br/>default: 0</td><td>page number for paging<br/>(offset into history = pagenumber*maximum return count)</td></tr> <tr><td>pg=</td><td><em>optional</em><br/>default: 0</td><td>page number for paging<br/>(offset into history = pagenumber*maximum return count)</td></tr>

+ 35
- 1
src/test/java/com/gitblit/tests/SyndicationUtilsTest.java View File

import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.atomic.AtomicBoolean;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import com.gitblit.Constants.SearchType; import com.gitblit.Constants.SearchType;
public class SyndicationUtilsTest extends GitblitUnitTest { public class SyndicationUtilsTest extends GitblitUnitTest {
private static final AtomicBoolean started = new AtomicBoolean(false);
@BeforeClass
public static void startGitblit() throws Exception {
started.set(GitBlitSuite.startGitblit());
}
@AfterClass
public static void stopGitblit() throws Exception {
if (started.get()) {
GitBlitSuite.stopGitblit();
}
}
@Test @Test
public void testSyndication() throws Exception { public void testSyndication() throws Exception {
List<FeedEntryModel> entries = new ArrayList<FeedEntryModel>(); List<FeedEntryModel> entries = new ArrayList<FeedEntryModel>();
} }
@Test @Test
public void testFeedRead() throws Exception {
public void testFeedReadCommits() throws Exception {
Set<String> links = new HashSet<String>(); Set<String> links = new HashSet<String>();
for (int i = 0; i < 2; i++) { for (int i = 0; i < 2; i++) {
List<FeedEntryModel> feed = SyndicationUtils.readFeed(GitBlitSuite.url, "ticgit.git", List<FeedEntryModel> feed = SyndicationUtils.readFeed(GitBlitSuite.url, "ticgit.git",
assertEquals("Feed pagination failed", 10, links.size()); assertEquals("Feed pagination failed", 10, links.size());
} }
@Test
public void testFeedReadTags() throws Exception {
Set<String> links = new HashSet<String>();
for (int i = 0; i < 2; i++) {
List<FeedEntryModel> feed = SyndicationUtils.readTags(GitBlitSuite.url, "test/gitective.git",
5, i, GitBlitSuite.account, GitBlitSuite.password.toCharArray());
assertTrue(feed != null);
assertTrue(feed.size() > 0);
assertEquals(5, feed.size());
for (FeedEntryModel entry : feed) {
links.add(entry.link);
}
}
// confirm we have 10 unique tags
assertEquals("Feed pagination failed", 10, links.size());
}
@Test @Test
public void testSearchFeedRead() throws Exception { public void testSearchFeedRead() throws Exception {
List<FeedEntryModel> feed = SyndicationUtils List<FeedEntryModel> feed = SyndicationUtils

Loading…
Cancel
Save