]> source.dussan.org Git - jgit.git/commitdiff
Add getters to RepoProject. 55/48555/4
authorYuxuan 'fishy' Wang <fishywang@google.com>
Mon, 25 May 2015 18:41:24 +0000 (11:41 -0700)
committerYuxuan 'fishy' Wang <fishywang@google.com>
Tue, 26 May 2015 16:58:38 +0000 (09:58 -0700)
Change-Id: I74ded6c2c3f5985568cd77bd8799b45017fb1d09
Signed-off-by: Yuxuan 'fishy' Wang <fishywang@google.com>
org.eclipse.jgit.test/tst/org/eclipse/jgit/gitrepo/ManifestParserTest.java
org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/ManifestParser.java
org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoCommand.java
org.eclipse.jgit/src/org/eclipse/jgit/gitrepo/RepoProject.java

index 1005b39ec6037e462cad6ac605045bd2f3340014..5ed4268eb83d6209eb04fcb40c870cf5474c599e 100644 (file)
@@ -87,9 +87,9 @@ public class ManifestParserTest {
                for (RepoProject proj : parser.getProjects()) {
                        String msg = String.format(
                                        "project \"%s\" should be included in unfiltered projects",
-                                       proj.path);
-                       assertTrue(msg, results.contains(proj.path));
-                       results.remove(proj.path);
+                                       proj.getPath());
+                       assertTrue(msg, results.contains(proj.getPath()));
+                       results.remove(proj.getPath());
                }
                assertTrue(
                                "Unfiltered projects shouldn't contain any unexpected results",
@@ -101,9 +101,9 @@ public class ManifestParserTest {
                for (RepoProject proj : parser.getFilteredProjects()) {
                        String msg = String.format(
                                        "project \"%s\" should be included in filtered projects",
-                                       proj.path);
-                       assertTrue(msg, results.contains(proj.path));
-                       results.remove(proj.path);
+                                       proj.getPath());
+                       assertTrue(msg, results.contains(proj.getPath()));
+                       results.remove(proj.getPath());
                }
                assertTrue(
                                "Filtered projects shouldn't contain any unexpected results",
index ec9fdfa4e278b3f0ffc540ab6ed93cf3a3272b2f..fa27948a64bf2c586bb3d352780df67314814901 100644 (file)
@@ -205,7 +205,7 @@ public class ManifestParser extends DefaultHandler {
                                throw new SAXException(RepoText.get().invalidManifest);
                        currentProject.addCopyFile(new CopyFile(
                                                rootRepo,
-                                               currentProject.path,
+                                               currentProject.getPath(),
                                                attributes.getValue("src"), //$NON-NLS-1$
                                                attributes.getValue("dest"))); //$NON-NLS-1$
                } else if ("include".equals(qName)) { //$NON-NLS-1$
@@ -266,7 +266,7 @@ public class ManifestParser extends DefaultHandler {
                        throw new SAXException(e);
                }
                for (RepoProject proj : projects) {
-                       String remote = proj.remote;
+                       String remote = proj.getRemote();
                        if (remote == null) {
                                if (defaultRemote == null) {
                                        if (filename != null)
@@ -286,7 +286,7 @@ public class ManifestParser extends DefaultHandler {
                                        remoteUrl = remoteUrl + "/"; //$NON-NLS-1$
                                remoteUrls.put(remote, remoteUrl);
                        }
-                       proj.setUrl(remoteUrl + proj.name)
+                       proj.setUrl(remoteUrl + proj.getName())
                                        .setDefaultRevision(defaultRevision);
                }
 
@@ -339,7 +339,7 @@ public class ManifestParser extends DefaultHandler {
 
        boolean inGroups(RepoProject proj) {
                for (String group : minusGroups) {
-                       if (proj.groups.contains(group)) {
+                       if (proj.inGroup(group)) {
                                // minus groups have highest priority.
                                return false;
                        }
@@ -349,7 +349,7 @@ public class ManifestParser extends DefaultHandler {
                        return true;
                }
                for (String group : plusGroups) {
-                       if (proj.groups.contains(group))
+                       if (proj.inGroup(group))
                                return true;
                }
                return false;
index d258250fea2c0507f55821ed61bfa641b32ec097..b39dd8a1f2b5092c826212c032be6c5105093895 100644 (file)
@@ -379,10 +379,10 @@ public class RepoCommand extends GitCommand<RevCommit> {
                        try {
                                parser.read(inputStream);
                                for (RepoProject proj : parser.getFilteredProjects()) {
-                                       addSubmodule(proj.url,
-                                                       proj.path,
+                                       addSubmodule(proj.getUrl(),
+                                                       proj.getPath(),
                                                        proj.getRevision(),
-                                                       proj.copyfiles);
+                                                       proj.getCopyFiles());
                                }
                        } catch (GitAPIException | IOException e) {
                                throw new ManifestErrorException(e);
@@ -403,17 +403,17 @@ public class RepoCommand extends GitCommand<RevCommit> {
                        try (RevWalk rw = new RevWalk(repo)) {
                                Config cfg = new Config();
                                for (RepoProject proj : bareProjects) {
-                                       String name = proj.path;
-                                       String nameUri = proj.name;
+                                       String name = proj.getPath();
+                                       String nameUri = proj.getName();
                                        cfg.setString("submodule", name, "path", name); //$NON-NLS-1$ //$NON-NLS-2$
                                        cfg.setString("submodule", name, "url", nameUri); //$NON-NLS-1$ //$NON-NLS-2$
                                        // create gitlink
                                        DirCacheEntry dcEntry = new DirCacheEntry(name);
                                        ObjectId objectId;
-                                       if (ObjectId.isId(proj.revision))
-                                               objectId = ObjectId.fromString(proj.revision);
+                                       if (ObjectId.isId(proj.getRevision()))
+                                               objectId = ObjectId.fromString(proj.getRevision());
                                        else {
-                                               objectId = callback.sha1(nameUri, proj.revision);
+                                               objectId = callback.sha1(nameUri, proj.getRevision());
                                        }
                                        if (objectId == null)
                                                throw new RemoteUnavailableException(nameUri);
@@ -421,9 +421,9 @@ public class RepoCommand extends GitCommand<RevCommit> {
                                        dcEntry.setFileMode(FileMode.GITLINK);
                                        builder.add(dcEntry);
 
-                                       for (CopyFile copyfile : proj.copyfiles) {
+                                       for (CopyFile copyfile : proj.getCopyFiles()) {
                                                byte[] src = callback.readFile(
-                                                               nameUri, proj.revision, copyfile.src);
+                                                               nameUri, proj.getRevision(), copyfile.src);
                                                objectId = inserter.insert(Constants.OBJ_BLOB, src);
                                                dcEntry = new DirCacheEntry(copyfile.dest);
                                                dcEntry.setObjectId(objectId);
@@ -495,7 +495,7 @@ public class RepoCommand extends GitCommand<RevCommit> {
                        List<CopyFile> copyfiles) throws GitAPIException, IOException {
                if (repo.isBare()) {
                        RepoProject proj = new RepoProject(url, name, revision, null, null);
-                       proj.copyfiles.addAll(copyfiles);
+                       proj.addCopyFiles(copyfiles);
                        bareProjects.add(proj);
                } else {
                        SubmoduleAddCommand add = git
index dfd4f1bba8b3ba1f39a2547ff470021ed0c11d48..1fff1c3532e3aaa6e3ffa9a287b80bd57afe5400 100644 (file)
@@ -49,6 +49,8 @@ import java.io.IOException;
 import java.nio.channels.FileChannel;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -62,14 +64,14 @@ import org.eclipse.jgit.lib.Repository;
  * @since 4.0
  */
 public class RepoProject implements Comparable<RepoProject> {
-       final String name;
-       final String path;
-       final String revision;
-       final String remote;
-       final Set<String> groups;
-       final List<CopyFile> copyfiles;
-       String url;
-       String defaultRevision;
+       private final String name;
+       private final String path;
+       private final String revision;
+       private final String remote;
+       private final Set<String> groups;
+       private final List<CopyFile> copyfiles;
+       private String url;
+       private String defaultRevision;
 
        /**
         * The representation of a copy file configuration.
@@ -82,10 +84,13 @@ public class RepoProject implements Comparable<RepoProject> {
 
                /**
                 * @param repo
+                *            the super project.
                 * @param path
                 *            the path of the project containing this copyfile config.
                 * @param src
+                *            the source path relative to the sub repo.
                 * @param dest
+                *            the destination path relative to the super project.
                 */
                public CopyFile(Repository repo, String path, String src, String dest) {
                        this.repo = repo;
@@ -108,7 +113,8 @@ public class RepoProject implements Comparable<RepoProject> {
                                FileOutputStream output = new FileOutputStream(destFile);
                                try {
                                        FileChannel channel = input.getChannel();
-                                       output.getChannel().transferFrom(channel, 0, channel.size());
+                                       output.getChannel().transferFrom(
+                                                       channel, 0, channel.size());
                                } finally {
                                        output.close();
                                }
@@ -120,10 +126,15 @@ public class RepoProject implements Comparable<RepoProject> {
 
        /**
         * @param name
+        *            the relative path to the {@code remote}
         * @param path
+        *            the relative path to the super project
         * @param revision
+        *            a SHA-1 or branch name or tag name
         * @param remote
+        *            name of the remote definition
         * @param groups
+        *            comma separated group list
         */
        public RepoProject(String name, String path, String revision,
                        String remote, String groups) {
@@ -162,15 +173,70 @@ public class RepoProject implements Comparable<RepoProject> {
                return this;
        }
 
+       /**
+        * Get the name (relative path to the {@code remote}) of this sub repo.
+        *
+        * @return {@code name}
+        */
+       public String getName() {
+               return name;
+       }
+
+       /**
+        * Get the path (relative path to the super project) of this sub repo.
+        *
+        * @return {@code path}
+        */
+       public String getPath() {
+               return path;
+       }
+
        /**
         * Get the revision of the sub repo.
         *
-        * @return revision if set, or default revision.
+        * @return {@code revision} if set, or {@code defaultRevision}.
         */
        public String getRevision() {
                return revision == null ? defaultRevision : revision;
        }
 
+       /**
+        * Getter for the copyfile configurations.
+        *
+        * @return Immutable copy of {@code copyfiles}
+        */
+       public List<CopyFile> getCopyFiles() {
+               return Collections.unmodifiableList(copyfiles);
+       }
+
+       /**
+        * Get the url of the sub repo.
+        *
+        * @return {@code url}
+        */
+       public String getUrl() {
+               return url;
+       }
+
+       /**
+        * Get the name of the remote definition of the sub repo.
+        *
+        * @return {@remote}
+        */
+       public String getRemote() {
+               return remote;
+       }
+
+       /**
+        * Test whether this sub repo belongs to a specified group.
+        *
+        * @param group
+        * @return true if {@code group} is present.
+        */
+       public boolean inGroup(String group) {
+               return groups.contains(group);
+       }
+
        /**
         * Add a copy file configuration.
         *
@@ -180,7 +246,16 @@ public class RepoProject implements Comparable<RepoProject> {
                copyfiles.add(copyfile);
        }
 
-       String getPathWithSlash() {
+       /**
+        * Add a bunch of copyfile configurations.
+        *
+        * @param copyfiles
+        */
+       public void addCopyFiles(Collection<CopyFile> copyfiles) {
+               this.copyfiles.addAll(copyfiles);
+       }
+
+       private String getPathWithSlash() {
                if (path.endsWith("/")) //$NON-NLS-1$
                        return path;
                else