Skip to content

Commit d0969e0

Browse files
Vladimir Kotalahornace
authored andcommitted
add hasField() to detect property in a class instance
also fix wrong repository field value propagation
1 parent 054e4cd commit d0969e0

File tree

3 files changed

+34
-14
lines changed

3 files changed

+34
-14
lines changed

opengrok-indexer/src/main/java/org/opengrok/indexer/util/ClassUtil.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,20 @@ private static void invokeSetter(Method setter, Object obj, String fieldName, Ob
224224
}
225225
}
226226

227+
/**
228+
* @param obj object
229+
* @param fieldName field name
230+
* @return true if field is present in the object (not recursively) or false
231+
*/
232+
public static boolean hasField(Object obj, String fieldName) {
233+
try {
234+
PropertyDescriptor desc = new PropertyDescriptor(fieldName, obj.getClass());
235+
} catch (IntrospectionException e) {
236+
return false;
237+
}
238+
return true;
239+
}
240+
227241
/**
228242
* Invokes a getter of a property on an object.
229243
*

opengrok-web/src/main/java/org/opengrok/web/api/v1/controller/ProjectsController.java

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -315,17 +315,10 @@ public void set(
315315
List<RepositoryInfo> riList = env.getProjectRepositoriesMap().get(project);
316316
if (riList != null) {
317317
for (RepositoryInfo ri : riList) {
318-
Repository repo = getRepository(ri, CommandTimeoutType.RESTFUL);
319-
320318
// Set the property if there is one.
321-
try {
322-
ClassUtil.getFieldValue(repo, field);
323-
} catch (IOException e) {
324-
// ignore
325-
continue;
319+
if (ClassUtil.hasField(ri, field)) {
320+
ClassUtil.setFieldValue(ri, field, value);
326321
}
327-
328-
ClassUtil.setFieldValue(repo, field, value);
329322
}
330323
}
331324
} else {

opengrok-web/src/test/java/org/opengrok/web/api/v1/controller/ProjectsControllerTest.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -482,21 +482,24 @@ void testGetRepos() throws Exception {
482482
}
483483

484484
@Test
485-
void testSetIndexed() throws Exception {
485+
void testSetIndexed() {
486486
String project = "git";
487487
addProject(project);
488488
assertEquals(1, env.getProjectList().size());
489489

490+
env.getProjects().get(project).setIndexed(false);
491+
assertFalse(env.getProjects().get(project).isIndexed());
490492
Response response = target("projects")
491493
.path(project)
492494
.path("property/indexed")
493495
.request()
494496
.put(Entity.text(Boolean.TRUE.toString()));
495497
assertEquals(response.getStatus(), Response.Status.NO_CONTENT.getStatusCode());
498+
assertTrue(env.getProjects().get(project).isIndexed());
496499
}
497500

498501
@Test
499-
void testSetGet() throws Exception {
502+
void testSetGet() {
500503
assertTrue(env.isHandleHistoryOfRenamedFiles());
501504
String[] projects = new String[] {"mercurial", "git"};
502505

@@ -505,8 +508,19 @@ void testSetGet() throws Exception {
505508
}
506509

507510
assertEquals(2, env.getProjectList().size());
511+
for (String proj : projects) {
512+
Project project = env.getProjects().get(proj);
513+
assertNotNull(project);
514+
assertTrue(project.isHandleRenamedFiles());
515+
List<RepositoryInfo> riList = env.getProjectRepositoriesMap().get(project);
516+
assertNotNull(riList);
517+
for (RepositoryInfo ri : riList) {
518+
ri.setHandleRenamedFiles(true);
519+
assertTrue(ri.isHandleRenamedFiles());
520+
}
521+
}
508522

509-
// Change their property.
523+
// Change their property via RESTful API call.
510524
for (String proj : projects) {
511525
setHandleRenamedFilesToFalse(proj);
512526
}
@@ -519,8 +533,7 @@ void testSetGet() throws Exception {
519533
List<RepositoryInfo> riList = env.getProjectRepositoriesMap().get(project);
520534
assertNotNull(riList);
521535
for (RepositoryInfo ri : riList) {
522-
Repository repo = getRepository(ri, CommandTimeoutType.RESTFUL);
523-
assertFalse(repo.isHandleRenamedFiles());
536+
assertFalse(ri.isHandleRenamedFiles());
524537
}
525538
}
526539

0 commit comments

Comments
 (0)