Skip to content

Commit 38c7f13

Browse files
committed
Merge pull request aol#23 from aol/servlet-request-listener
Servlet request listener
2 parents b60b9b9 + 4bfda84 commit 38c7f13

File tree

9 files changed

+72
-13
lines changed

9 files changed

+72
-13
lines changed

micro-core/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ modifyPom {
1212

1313
groupId 'com.aol.microservices'
1414
artifactId 'microserver-core'
15-
version '0.56'
15+
version '0.57'
1616

1717
dependencyManagement {
1818
dependencies{

micro-core/src/main/java/com/aol/micro/server/module/ConfigurableModule.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import javax.servlet.Filter;
1111
import javax.servlet.Servlet;
1212
import javax.servlet.ServletContextListener;
13+
import javax.servlet.ServletRequestListener;
1314

1415
import org.glassfish.grizzly.http.server.HttpServer;
1516

@@ -33,6 +34,7 @@ public class ConfigurableModule implements Module{
3334
private final List<Class> restResourceClasses;
3435
private final List<Class> defaultResources;
3536
private final List<ServletContextListener> listeners;
37+
private final List<ServletRequestListener> requestListeners;
3638
private final Map<String, Filter> filters;
3739
private final Map<String, Servlet> servlets;
3840
private final String jaxWsRsApplication;
@@ -72,7 +74,7 @@ private <K,V> Map<K,V> extractMap(Supplier<Map<K,V>> s) {
7274
@Override
7375
public List<Class> getRestResourceClasses() {
7476
if(restResourceClasses!=null)
75-
return ImmutableList.copyOf(Iterables.concat(restResourceClasses,extract(()->Module.super.getRestResourceClasses())));
77+
return ImmutableList.copyOf(Iterables.concat(restResourceClasses, extract(() -> Module.super.getRestResourceClasses())));
7678

7779
return Module.super.getRestResourceClasses();
7880
}
@@ -92,7 +94,16 @@ public List<ServletContextListener> getListeners(ServerData data) {
9294

9395
return Module.super.getListeners(data);
9496
}
95-
97+
98+
@Override
99+
public List<ServletRequestListener> getRequestListeners(ServerData data) {
100+
if(requestListeners!=null)
101+
return ImmutableList.copyOf(Iterables.concat(this.requestListeners,
102+
extract(()->Module.super.getRequestListeners(data))));
103+
104+
return Module.super.getRequestListeners(data);
105+
}
106+
96107
@Override
97108
public Map<String, Filter> getFilters(ServerData data) {
98109
if(filters!=null)

micro-core/src/main/java/com/aol/micro/server/module/Module.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import javax.servlet.Filter;
1111
import javax.servlet.Servlet;
1212
import javax.servlet.ServletContextListener;
13+
import javax.servlet.ServletRequestListener;
1314

1415
import org.glassfish.grizzly.http.server.HttpServer;
1516
import org.springframework.web.context.ContextLoaderListener;
@@ -76,6 +77,9 @@ default List<ServletContextListener> getListeners(ServerData data){
7677
list.add(new SwaggerInitializer(data));
7778
return ImmutableList.copyOf(list);
7879
}
80+
default List<ServletRequestListener> getRequestListeners(ServerData data){
81+
return ImmutableList.of();
82+
}
7983
default Map<String,Filter> getFilters(ServerData data) {
8084
return ImmutableMap.of("/*",new QueryIPRetriever());
8185
}

micro-core/src/main/java/com/aol/micro/server/servers/grizzly/GrizzlyApplication.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.concurrent.ExecutionException;
66

77
import javax.servlet.ServletContextListener;
8+
import javax.servlet.ServletRequestListener;
89

910
import lombok.AccessLevel;
1011
import lombok.AllArgsConstructor;
@@ -43,6 +44,7 @@ public class GrizzlyApplication implements ServerApplication {
4344
private final ImmutableList<FilterData> filterData;
4445
private final ImmutableList<ServletData> servletData;
4546
private final ImmutableList<ServletContextListener> servletContextListenerData;
47+
private final ImmutableList<ServletRequestListener> servletRequestListenerData;
4648
@Wither
4749
private final SSLProperties SSLProperties;
4850

@@ -51,14 +53,15 @@ public GrizzlyApplication(AllData serverData) {
5153
this.filterData = serverData.getFilterDataList();
5254
this.servletData = serverData.getServletDataList();
5355
this.servletContextListenerData = serverData.getServletContextListeners();
56+
this.servletRequestListenerData = serverData.getServletRequestListeners();
5457
this.SSLProperties = null;
5558
}
5659

5760
public void run(CompletableFuture start, CompletableFuture end) {
5861

5962
WebappContext webappContext = new WebappContext("WebappContext", "");
6063

61-
new ServletContextListenerConfigurer(serverData, servletContextListenerData);
64+
new ServletContextListenerConfigurer(serverData, servletContextListenerData,servletRequestListenerData);
6265

6366
addServlet(webappContext);
6467

@@ -143,7 +146,7 @@ private NetworkListener createSSLListener(int port) {
143146
}
144147

145148
private void addListeners(WebappContext webappContext) {
146-
new ServletContextListenerConfigurer(serverData, servletContextListenerData).addListeners(webappContext);
149+
new ServletContextListenerConfigurer(serverData, servletContextListenerData, servletRequestListenerData).addListeners(webappContext);
147150
}
148151

149152
private String replaceSlash(String context) {

micro-core/src/main/java/com/aol/micro/server/servers/grizzly/ServletContextListenerConfigurer.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.List;
44

55
import javax.servlet.ServletContextListener;
6+
import javax.servlet.ServletRequestListener;
67

78
import lombok.AllArgsConstructor;
89

@@ -21,7 +22,8 @@ public class ServletContextListenerConfigurer {
2122
private final Logger logger = LoggerFactory.getLogger(getClass());
2223
private final ServerData serverData;
2324
private final List<ServletContextListener> listenerData;
24-
25+
private final List<ServletRequestListener> listenerRequestData;
26+
2527
public void addListeners(WebappContext webappContext) {
2628

2729
serverData.getRootContext()
@@ -33,12 +35,24 @@ public void addListeners(WebappContext webappContext) {
3335
.peek(this::logListener)
3436
.forEach(listener -> webappContext.addListener(listener));
3537
listenerData.forEach(it -> webappContext.addListener(it));
38+
39+
serverData.getRootContext()
40+
.getBeansOfType(ServletRequestListener.class)
41+
.values()
42+
.stream()
43+
.peek(this::logListener)
44+
.forEach(listener -> webappContext.addListener(listener));
45+
listenerRequestData.forEach(it -> webappContext.addListener(it));
46+
3647
}
3748
private void logListener(ServletContextListener listener) {
38-
logger.info("Registering servlet context listener {}",listener.getClass().getName());
49+
logger.info("Registering servlet context listener {}", listener.getClass().getName());
3950

4051
}
41-
52+
private void logListener(ServletRequestListener listener) {
53+
logger.info("Registering servlet request listener {}",listener.getClass().getName());
54+
55+
}
4256

4357

4458
}

micro-core/src/main/java/com/aol/micro/server/servers/model/AllData.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.List;
55

66
import javax.servlet.ServletContextListener;
7+
import javax.servlet.ServletRequestListener;
78

89
import lombok.Getter;
910
import lombok.experimental.Builder;
@@ -19,13 +20,17 @@ public class AllData {
1920
private final ImmutableList<FilterData> filterDataList;
2021
private final ImmutableList<ServletData> servletDataList;
2122
private final ImmutableList<ServletContextListener> servletContextListeners;
22-
23+
private final ImmutableList<ServletRequestListener> servletRequestListeners;
24+
2325
public AllData(ServerData serverData, List<FilterData> filterDataList,
2426
List<ServletData> servletDataList,
25-
List<ServletContextListener> servletContextListeners) {
27+
List<ServletContextListener> servletContextListeners,
28+
List<ServletRequestListener> servletRequestListeners ) {
2629

2730
this.servletContextListeners = ImmutableList.copyOf(UsefulStaticMethods.either(servletContextListeners, new ArrayList<ServletContextListener>()));
2831

32+
this.servletRequestListeners = ImmutableList.copyOf(UsefulStaticMethods.either(servletRequestListeners, new ArrayList<ServletRequestListener>()));
33+
2934
this.filterDataList = ImmutableList.copyOf(UsefulStaticMethods.either(filterDataList, new ArrayList<FilterData>()));
3035
this.servletDataList = ImmutableList.copyOf(UsefulStaticMethods.either(servletDataList, new ArrayList<ServletData>()));
3136
this.serverData = serverData;

micro-core/src/main/java/com/aol/micro/server/servers/model/GrizzlyApplicationFactory.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,12 @@ public ServerApplication createApp() {
3636
List<FilterData> filterDataList = extractor.createFilteredDataList(serverData);
3737
List<ServletData> servletDataList = extractor.createServletDataList(serverData);
3838

39-
GrizzlyApplication app = new GrizzlyApplication(new AllData(serverData,
40-
filterDataList, servletDataList,module.getListeners(serverData)));
39+
GrizzlyApplication app = new GrizzlyApplication(
40+
new AllData(serverData,
41+
filterDataList,
42+
servletDataList,
43+
module.getListeners(serverData),
44+
module.getRequestListeners(serverData)));
4145
return app;
4246
}
4347
}

micro-core/src/test/java/com/aol/micro/server/module/ConfigurableModuleTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import javax.servlet.Filter;
1515
import javax.servlet.Servlet;
1616
import javax.servlet.ServletContextListener;
17+
import javax.servlet.ServletRequestListener;
1718

1819
import org.glassfish.grizzly.http.server.HttpServer;
1920
import org.junit.Before;
@@ -35,6 +36,7 @@ public class ConfigurableModuleTest {
3536
private Map<String, Filter> filters;
3637
private String jaxWsRsApplication;
3738
private List<ServletContextListener> listeners;
39+
private List<ServletRequestListener> requestListeners;
3840
private String providers;
3941
private List<Class> resourceClasses;
4042
private Map<String, Servlet> servlets;
@@ -52,6 +54,7 @@ public void setup(){
5254
filters = ImmutableMap.of("/*1",new QueryIPRetriever());
5355
jaxWsRsApplication = "jaxRsApp2";
5456
listeners = m.getListeners(ServerData.builder().resources(ImmutableList.of()).build());
57+
requestListeners = m.getRequestListeners(ServerData.builder().resources(ImmutableList.of()).build());
5558
providers = "providers2";
5659
Module m = () -> "hello";
5760
resourceClasses =new ArrayList<>();
@@ -67,6 +70,7 @@ public void setup(){
6770
.filters(filters)
6871
.jaxWsRsApplication(jaxWsRsApplication)
6972
.listeners(listeners)
73+
.requestListeners(requestListeners)
7074
.providers(providers)
7175
.restResourceClasses(resourceClasses)
7276
.servlets(servlets)
@@ -139,6 +143,20 @@ public void testGetListenersUnchanged() {
139143
assertThat(unchanged.getListeners(ServerData.builder().resources(ImmutableList.of()).build()).size() ,
140144
is(m.getListeners(ServerData.builder().resources(ImmutableList.of()).build()).size()));
141145
}
146+
@Test
147+
public void testGetRequestListeners() {
148+
assertThat(module.getRequestListeners(ServerData.builder().resources(ImmutableList.of()).build()).size(),
149+
is(m.getRequestListeners(ServerData.builder().resources(ImmutableList.of()).build()).size()*2)); //doubled
150+
}
151+
@Test
152+
public void testGetRequestListenersReset() {
153+
assertThat(module.withResetAll(true).getRequestListeners(ServerData.builder().resources(ImmutableList.of()).build()),is(this.requestListeners));
154+
}
155+
@Test
156+
public void testGetRequestListenersUnchanged() {
157+
assertThat(unchanged.getRequestListeners(ServerData.builder().resources(ImmutableList.of()).build()).size() ,
158+
is(m.getRequestListeners(ServerData.builder().resources(ImmutableList.of()).build()).size()));
159+
}
142160

143161
@Test
144162
public void testGetFilters() {

micro-tutorial/src/main/java/app1/simple/MyRestEndPoint.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import com.aol.micro.server.rest.JacksonUtil;
1919
import com.aol.micro.server.spring.datasource.jdbc.SQL;
2020
import com.aol.micro.server.web.filter.QueryIPRetriever;
21-
import com.aol.simple.react.stream.eager.EagerFutureStream;
21+
import com.aol.simple.react.stream.traits.EagerFutureStream;
2222
import com.google.common.collect.ImmutableList;
2323
import com.google.common.eventbus.EventBus;
2424
import com.wordnik.swagger.annotations.Api;

0 commit comments

Comments
 (0)