Skip to content

Commit ed9e7cf

Browse files
authored
Merge pull request #1889 from vladak/RepositoryInfo_equals
override RepositoryInfo.equals() so that removeAll() works for Projec…
2 parents a1d7060 + aee2383 commit ed9e7cf

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

src/org/opensolaris/opengrok/history/RepositoryInfo.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424

2525
import java.io.Serializable;
2626
import java.text.SimpleDateFormat;
27+
import java.util.Objects;
2728
import org.opensolaris.opengrok.configuration.RuntimeEnvironment;
2829
import org.opensolaris.opengrok.util.ClassUtil;
2930

@@ -215,4 +216,27 @@ public String getCurrentVersion() {
215216
public void setCurrentVersion(String currentVersion) {
216217
this.currentVersion = currentVersion;
217218
}
219+
220+
@Override
221+
public boolean equals(Object obj) {
222+
if (!(obj instanceof RepositoryInfo)) {
223+
return false;
224+
}
225+
226+
RepositoryInfo ri = (RepositoryInfo) obj;
227+
228+
// Directory paths should be unique.
229+
if (ri.getDirectoryNameRelative() != null && this.getDirectoryNameRelative() != null) {
230+
return ri.getDirectoryNameRelative().equals(this.getDirectoryNameRelative());
231+
} else {
232+
return (ri.getDirectoryNameRelative() == null && this.getDirectoryNameRelative() == null);
233+
}
234+
}
235+
236+
@Override
237+
public int hashCode() {
238+
int hash = 7;
239+
hash = 89 * hash + Objects.hashCode(this.directoryNameRelative);
240+
return hash;
241+
}
218242
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
* CDDL HEADER START
3+
*
4+
* The contents of this file are subject to the terms of the
5+
* Common Development and Distribution License (the "License").
6+
* You may not use this file except in compliance with the License.
7+
*
8+
* See LICENSE.txt included in this distribution for the specific
9+
* language governing permissions and limitations under the License.
10+
*
11+
* When distributing Covered Code, include this CDDL HEADER in each
12+
* file and include the License file at LICENSE.txt.
13+
* If applicable, add the following below this CDDL HEADER, with the
14+
* fields enclosed by brackets "[]" replaced with your own identifying
15+
* information: Portions Copyright [yyyy] [name of copyright owner]
16+
*
17+
* CDDL HEADER END
18+
*/
19+
20+
/*
21+
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
22+
*/
23+
package org.opensolaris.opengrok.history;
24+
25+
import static org.junit.Assert.assertEquals;
26+
import static org.junit.Assert.assertNotEquals;
27+
import org.junit.Before;
28+
import org.junit.Test;
29+
import org.opensolaris.opengrok.configuration.RuntimeEnvironment;
30+
31+
/**
32+
*
33+
* @author Vladimir Kotal
34+
*/
35+
public class RepositoryInfoTest {
36+
@Before
37+
public void setUp() {
38+
RuntimeEnvironment.getInstance().setSourceRoot("/src");
39+
}
40+
41+
@Test
42+
public void testEquals() {
43+
String repoDirectory = "/src/foo";
44+
45+
RepositoryInfo ri1 = new RepositoryInfo();
46+
ri1.setDirectoryName(repoDirectory);
47+
ri1.setBranch("branch1");
48+
49+
RepositoryInfo ri2 = new RepositoryInfo();
50+
assertNotEquals(ri1, ri2);
51+
52+
ri2.setDirectoryName(repoDirectory);
53+
assertEquals(ri1, ri2);
54+
}
55+
}

0 commit comments

Comments
 (0)