Skip to content

Commit c7e42fc

Browse files
author
Vladimir Kotal
committed
use cglib with modelmapper
1 parent be0aa2e commit c7e42fc

File tree

4 files changed

+21
-86
lines changed

4 files changed

+21
-86
lines changed

opengrok-indexer/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,11 +194,6 @@ Portions Copyright (c) 2017-2019, Chris Fraire <[email protected]>.
194194
<artifactId>jackson-annotations</artifactId>
195195
<version>${jackson.version}</version>
196196
</dependency>
197-
<dependency>
198-
<groupId>cglib</groupId>
199-
<artifactId>cglib</artifactId>
200-
<version>3.2.4</version>
201-
</dependency>
202197
</dependencies>
203198

204199
<build>

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

Lines changed: 0 additions & 68 deletions
This file was deleted.

opengrok-web/pom.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,16 @@ Portions Copyright (c) 2018, Chris Fraire <[email protected]>.
148148
<artifactId>org.suigeneris.jrcs.diff</artifactId>
149149
<version>0.4.2</version>
150150
</dependency>
151+
<dependency>
152+
<groupId>cglib</groupId>
153+
<artifactId>cglib</artifactId>
154+
<version>3.2.4</version>
155+
</dependency>
156+
<dependency>
157+
<groupId>org.modelmapper</groupId>
158+
<artifactId>modelmapper</artifactId>
159+
<version>2.3.0</version>
160+
</dependency>
151161
</dependencies>
152162

153163
<build>

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

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@
2222
*/
2323
package org.opengrok.web.api.v1.controller;
2424

25+
import net.sf.cglib.beans.BeanGenerator;
26+
import org.modelmapper.ModelMapper;
2527
import org.opengrok.indexer.configuration.RuntimeEnvironment;
2628
import org.opengrok.indexer.history.RepositoryInfo;
27-
import org.opengrok.indexer.util.BeanBuilder;
2829
import org.opengrok.indexer.util.ClassUtil;
2930

3031
import javax.ws.rs.GET;
@@ -36,6 +37,7 @@
3637
import javax.ws.rs.core.MediaType;
3738
import javax.ws.rs.core.Response;
3839
import java.io.IOException;
40+
import java.lang.reflect.Field;
3941

4042
@Path("/repositories")
4143
public class RepositoriesController {
@@ -54,21 +56,17 @@ static class RepositoryInfoDTO {
5456
}
5557

5658
private Object createRepositoryInfoTO(RepositoryInfo ri) {
57-
BeanBuilder builder = new BeanBuilder();
58-
builder.add("type", String.class, ri.getType())
59-
.add("directoryNameRelative", String.class, ri.getDirectoryNameRelative())
60-
.add("remote", boolean.class, ri.isRemote())
61-
.add("parent", String.class, ri.getParent())
62-
.add("branch", String.class, ri.getBranch())
63-
.add("currentVersion", String.class, ri.getCurrentVersion())
64-
.add("working", Boolean.class, ri.isWorking())
65-
.add("handleRenamedFiles", boolean.class, ri.isHandleRenamedFiles())
66-
.add("historyEnabled", boolean.class, ri.isHistoryEnabled());
59+
// ModelMapper assumes getters/setters so use BeanGenerator to provide them.
60+
BeanGenerator beanGenerator = new BeanGenerator();
61+
for (Field field : RepositoryInfoDTO.class.getDeclaredFields()) {
62+
beanGenerator.addProperty(field.getName(), field.getType());
63+
}
64+
Object bean = beanGenerator.create();
6765

68-
return builder.build();
66+
ModelMapper modelMapper = new ModelMapper();
67+
return modelMapper.map(ri, bean.getClass());
6968
}
7069

71-
7270
private Object getRepositoryInfoData(String repositoryPath) {
7371
for (RepositoryInfo ri : env.getRepositories()) {
7472
if (ri.getDirectoryNameRelative().equals(repositoryPath)) {

0 commit comments

Comments
 (0)