Skip to content

Commit d8c9fb8

Browse files
author
Vladimir Kotal
committed
abstract DTO manipulation to utility class
1 parent 170e87c commit d8c9fb8

File tree

2 files changed

+51
-19
lines changed

2 files changed

+51
-19
lines changed

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

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

25-
import net.sf.cglib.beans.BeanGenerator;
26-
import org.modelmapper.ModelMapper;
2725
import org.opengrok.indexer.configuration.RuntimeEnvironment;
2826
import org.opengrok.indexer.history.RepositoryInfo;
2927
import org.opengrok.indexer.util.ClassUtil;
30-
import org.opengrok.indexer.util.DTOElement;
28+
import org.opengrok.web.util.DTO;
3129

3230
import javax.ws.rs.GET;
3331
import javax.ws.rs.Path;
@@ -38,31 +36,16 @@
3836
import javax.ws.rs.core.MediaType;
3937
import javax.ws.rs.core.Response;
4038
import java.io.IOException;
41-
import java.lang.reflect.Field;
4239

4340
@Path("/repositories")
4441
public class RepositoriesController {
4542

4643
private RuntimeEnvironment env = RuntimeEnvironment.getInstance();
4744

48-
private Object createRepositoryInfoTO(RepositoryInfo ri) {
49-
// ModelMapper assumes getters/setters so use BeanGenerator to provide them.
50-
BeanGenerator beanGenerator = new BeanGenerator();
51-
for (Field field : RepositoryInfo.class.getDeclaredFields()) {
52-
if (field.isAnnotationPresent(DTOElement.class)) {
53-
beanGenerator.addProperty(field.getName(), field.getType());
54-
}
55-
}
56-
Object bean = beanGenerator.create();
57-
58-
ModelMapper modelMapper = new ModelMapper();
59-
return modelMapper.map(ri, bean.getClass());
60-
}
61-
6245
private Object getRepositoryInfoData(String repositoryPath) {
6346
for (RepositoryInfo ri : env.getRepositories()) {
6447
if (ri.getDirectoryNameRelative().equals(repositoryPath)) {
65-
return createRepositoryInfoTO(ri);
48+
return DTO.createDTO(ri);
6649
}
6750
}
6851

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
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) 2019 Oracle and/or its affiliates. All rights reserved.
22+
*/
23+
package org.opengrok.web.util;
24+
25+
import net.sf.cglib.beans.BeanGenerator;
26+
import org.modelmapper.ModelMapper;
27+
import org.opengrok.indexer.util.DTOElement;
28+
29+
import java.lang.reflect.Field;
30+
31+
public class DTO {
32+
private DTO() {
33+
// private to ensure static
34+
}
35+
36+
public static Object createDTO(Object object) {
37+
// ModelMapper assumes getters/setters so use BeanGenerator to provide them.
38+
BeanGenerator beanGenerator = new BeanGenerator();
39+
for (Field field : object.getClass().getDeclaredFields()) {
40+
if (field.isAnnotationPresent(DTOElement.class)) {
41+
beanGenerator.addProperty(field.getName(), field.getType());
42+
}
43+
}
44+
Object bean = beanGenerator.create();
45+
46+
ModelMapper modelMapper = new ModelMapper();
47+
return modelMapper.map(object, bean.getClass());
48+
}
49+
}

0 commit comments

Comments
 (0)