Skip to content

Commit 625b40a

Browse files
ahornaceVladimir Kotal
authored andcommitted
Make suggester part of the REST API
1 parent ca788a5 commit 625b40a

29 files changed

+141
-110
lines changed

src/org/opensolaris/opengrok/configuration/RuntimeEnvironment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
import org.opensolaris.opengrok.util.ForbiddenSymlinkException;
9090
import org.opensolaris.opengrok.util.PathUtils;
9191
import org.opensolaris.opengrok.web.Prefix;
92-
import org.opensolaris.opengrok.web.suggester.provider.service.SuggesterServiceFactory;
92+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterServiceFactory;
9393

9494
import javax.ws.rs.client.ClientBuilder;
9595
import javax.ws.rs.client.Entity;

src/org/opensolaris/opengrok/web/SearchHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@
7272
import org.opensolaris.opengrok.search.context.HistoryContext;
7373
import org.opensolaris.opengrok.util.ForbiddenSymlinkException;
7474
import org.opensolaris.opengrok.util.IOUtils;
75-
import org.opensolaris.opengrok.web.suggester.provider.service.SuggesterServiceFactory;
75+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterServiceFactory;
7676

7777
/**
7878
* Working set for a search basically to factor out/separate search related

src/org/opensolaris/opengrok/web/WebappListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
import org.opensolaris.opengrok.authorization.AuthorizationFramework;
3737
import org.opensolaris.opengrok.configuration.RuntimeEnvironment;
3838
import org.opensolaris.opengrok.logger.LoggerFactory;
39-
import org.opensolaris.opengrok.web.suggester.provider.service.SuggesterServiceFactory;
39+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterServiceFactory;
4040

4141
/**
4242
* Initialize webapp context

src/org/opensolaris/opengrok/web/api/v1/RestApp.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
package org.opensolaris.opengrok.web.api.v1;
2424

2525
import org.glassfish.jersey.server.ResourceConfig;
26+
import org.opensolaris.opengrok.web.api.v1.suggester.SuggesterAppBinder;
2627

2728
import javax.ws.rs.ApplicationPath;
2829

@@ -32,6 +33,7 @@ public class RestApp extends ResourceConfig {
3233
public static final String API_PATH = "/api/v1";
3334

3435
public RestApp() {
36+
register(new SuggesterAppBinder());
3537
packages("org.opensolaris.opengrok.web.api.constraints", "org.opensolaris.opengrok.web.api.error");
3638
packages(true, "org.opensolaris.opengrok.web.api.v1");
3739
}

src/org/opensolaris/opengrok/web/api/v1/controller/ProjectsController.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@
3434
import org.opensolaris.opengrok.util.ClassUtil;
3535
import org.opensolaris.opengrok.util.ForbiddenSymlinkException;
3636
import org.opensolaris.opengrok.util.IOUtils;
37-
import org.opensolaris.opengrok.web.suggester.provider.service.SuggesterServiceFactory;
37+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterService;
3838

39+
import javax.inject.Inject;
3940
import javax.ws.rs.Consumes;
4041
import javax.ws.rs.DELETE;
4142
import javax.ws.rs.GET;
@@ -69,6 +70,9 @@ public class ProjectsController {
6970

7071
private RuntimeEnvironment env = RuntimeEnvironment.getInstance();
7172

73+
@Inject
74+
private SuggesterService suggester;
75+
7276
@POST
7377
@Consumes(MediaType.TEXT_PLAIN)
7478
public Response addProject(final String projectName) {
@@ -184,7 +188,7 @@ public void deleteProject(@PathParam("project") final String projectName)
184188
}
185189
}).collect(Collectors.toSet()));
186190

187-
SuggesterServiceFactory.getDefault().delete(projectName);
191+
suggester.delete(projectName);
188192
}
189193

190194
@PUT
@@ -210,7 +214,7 @@ public void markIndexed(@PathParam("project") final String projectName) throws E
210214
}
211215
}
212216
}
213-
SuggesterServiceFactory.getDefault().refresh(projectName);
217+
suggester.refresh(projectName);
214218
} else {
215219
logger.log(Level.WARNING, "cannot find project {0} to mark as indexed", projectName);
216220
}

src/org/opensolaris/opengrok/web/api/v1/controller/SearchController.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@
2525
import org.apache.lucene.search.Query;
2626
import org.opensolaris.opengrok.search.Hit;
2727
import org.opensolaris.opengrok.search.SearchEngine;
28-
import org.opensolaris.opengrok.web.suggester.provider.service.SuggesterServiceFactory;
28+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterService;
2929

30+
import javax.inject.Inject;
3031
import javax.servlet.http.HttpServletRequest;
3132
import javax.ws.rs.DefaultValue;
3233
import javax.ws.rs.GET;
@@ -45,11 +46,16 @@
4546
import java.util.Map;
4647
import java.util.stream.Collectors;
4748

48-
@Path("/search")
49+
@Path(SearchController.PATH)
4950
public class SearchController {
5051

52+
public static final String PATH = "search";
53+
5154
private static final int MAX_RESULTS = 1000;
5255

56+
@Inject
57+
private SuggesterService suggester;
58+
5359
@GET
5460
@Produces(MediaType.APPLICATION_JSON)
5561
public SearchResult search(
@@ -72,7 +78,7 @@ public SearchResult search(
7278

7379
Instant startTime = Instant.now();
7480

75-
SuggesterServiceFactory.getDefault().onSearch(projects, engine.getQuery());
81+
suggester.onSearch(projects, engine.getQuery());
7682

7783
Map<String, List<SearchHit>> hits = engine.search(req, projects, startDocIndex, maxResults)
7884
.stream()

src/org/opensolaris/opengrok/web/suggester/controller/SuggesterController.java renamed to src/org/opensolaris/opengrok/web/api/v1/controller/SuggesterController.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
/*
2121
* Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.
2222
*/
23-
package org.opensolaris.opengrok.web.suggester.controller;
23+
package org.opensolaris.opengrok.web.api.v1.controller;
2424

2525
import org.apache.lucene.index.Term;
2626
import org.apache.lucene.queryparser.classic.ParseException;
@@ -33,12 +33,13 @@
3333
import org.opensolaris.opengrok.logger.LoggerFactory;
3434
import org.opensolaris.opengrok.search.QueryBuilder;
3535
import org.opensolaris.opengrok.web.Util;
36-
import org.opensolaris.opengrok.web.suggester.model.SuggesterData;
37-
import org.opensolaris.opengrok.web.suggester.model.SuggesterQueryData;
38-
import org.opensolaris.opengrok.web.suggester.parser.SuggesterQueryDataParser;
39-
import org.opensolaris.opengrok.web.suggester.provider.filter.Authorized;
40-
import org.opensolaris.opengrok.web.suggester.provider.filter.Localhost;
41-
import org.opensolaris.opengrok.web.suggester.provider.service.SuggesterService;
36+
import org.opensolaris.opengrok.web.api.v1.suggester.model.SuggesterData;
37+
import org.opensolaris.opengrok.web.api.v1.suggester.model.SuggesterQueryData;
38+
import org.opensolaris.opengrok.web.api.v1.suggester.parser.SuggesterQueryDataParser;
39+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.filter.Authorized;
40+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.filter.Localhost;
41+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.filter.Suggester;
42+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterService;
4243

4344
import javax.inject.Inject;
4445
import javax.validation.Valid;
@@ -64,9 +65,12 @@
6465
/**
6566
* Endpoint for suggester related REST queries.
6667
*/
67-
@Path("/")
68+
@Path(SuggesterController.PATH)
69+
@Suggester
6870
public final class SuggesterController {
6971

72+
public static final String PATH = "suggest";
73+
7074
private static final Logger logger = LoggerFactory.getLogger(SuggesterController.class);
7175

7276
private final RuntimeEnvironment env = RuntimeEnvironment.getInstance();

src/org/opensolaris/opengrok/web/api/v1/controller/SystemController.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,9 @@
2323
package org.opensolaris.opengrok.web.api.v1.controller;
2424

2525
import org.opensolaris.opengrok.configuration.RuntimeEnvironment;
26-
import org.opensolaris.opengrok.web.suggester.provider.service.SuggesterServiceFactory;
26+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterService;
2727

28+
import javax.inject.Inject;
2829
import javax.ws.rs.Consumes;
2930
import javax.ws.rs.PUT;
3031
import javax.ws.rs.Path;
@@ -36,12 +37,15 @@ public class SystemController {
3637

3738
private final RuntimeEnvironment env = RuntimeEnvironment.getInstance();
3839

40+
@Inject
41+
private SuggesterService suggester;
42+
3943
@PUT
4044
@Path("/refresh")
4145
@Consumes(MediaType.TEXT_PLAIN)
4246
public void refresh(final String project) {
4347
env.maybeRefreshIndexSearchers(Collections.singleton(project));
44-
SuggesterServiceFactory.getDefault().refresh(project);
48+
suggester.refresh(project);
4549
}
4650

4751
}

src/org/opensolaris/opengrok/web/api/v1/filter/LocalhostFilter.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
package org.opensolaris.opengrok.web.api.v1.filter;
2424

2525
import org.opensolaris.opengrok.logger.LoggerFactory;
26+
import org.opensolaris.opengrok.web.api.v1.controller.SearchController;
27+
import org.opensolaris.opengrok.web.api.v1.controller.SuggesterController;
2628

2729
import javax.annotation.PostConstruct;
2830
import javax.servlet.http.HttpServletRequest;
@@ -35,7 +37,6 @@
3537
import java.io.IOException;
3638
import java.net.InetAddress;
3739
import java.util.Arrays;
38-
import java.util.Collections;
3940
import java.util.HashSet;
4041
import java.util.Set;
4142
import java.util.logging.Level;
@@ -47,7 +48,8 @@ public class LocalhostFilter implements ContainerRequestFilter {
4748

4849
private static final Logger logger = LoggerFactory.getLogger(LocalhostFilter.class);
4950

50-
private static final Set<String> allowedPaths = Collections.singleton("search");
51+
private static final Set<String> allowedPaths = new HashSet<>(Arrays.asList(
52+
SearchController.PATH, SuggesterController.PATH));
5153

5254
@Context
5355
private HttpServletRequest request;

src/org/opensolaris/opengrok/web/suggester/SuggesterAppBinder.java renamed to src/org/opensolaris/opengrok/web/api/v1/suggester/SuggesterAppBinder.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@
2020
/*
2121
* Copyright (c) 2018 Oracle and/or its affiliates. All rights reserved.
2222
*/
23-
package org.opensolaris.opengrok.web.suggester;
23+
package org.opensolaris.opengrok.web.api.v1.suggester;
2424

2525
import org.glassfish.jersey.internal.inject.AbstractBinder;
26-
import org.opensolaris.opengrok.web.suggester.provider.service.SuggesterService;
27-
import org.opensolaris.opengrok.web.suggester.provider.service.SuggesterServiceFactory;
26+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterService;
27+
import org.opensolaris.opengrok.web.api.v1.suggester.provider.service.SuggesterServiceFactory;
2828

2929
/**
30-
* Binder for dependency injection in {@link SuggesterApp}.
30+
* Binder for suggester related dependency injection.
3131
*/
3232
public class SuggesterAppBinder extends AbstractBinder {
3333

0 commit comments

Comments
 (0)