Skip to content

Commit eaf23c4

Browse files
committed
Fix: Remove catalina dependency, work with JSP
1. Remove dependency on catalina 2. Ensure works with JSP and string writer 3. Remove Java 1.8 Code 4. Set Principle by default
1 parent eb46fd6 commit eaf23c4

File tree

25 files changed

+264
-8636
lines changed

25 files changed

+264
-8636
lines changed

README.md

Lines changed: 6 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,11 @@
77

88
## Introduction
99

10-
`moesif-servlet` is a Java SDK that logs API calls and sends to [Moesif](https://www.moesif.com) for API analytics and log analysis.
10+
`moesif-servlet` is a Java Servlet Filter that logs API calls and sends to [Moesif](https://www.moesif.com) for API analytics and log analysis.
1111

1212
The SDK is implemented as a Java EE [Servlet Filter](https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/Filter.html)
13-
without importing large framework specific dependencies.
14-
Many frameworks are built on top of the Servlet API such as Spring, Apache Struts, Jersey, etc.
15-
16-
If you're using a web framework that is built on the
17-
[Servlet API](https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/Servlet.html)
18-
such as Spring Boot, Spring MVC, Jersey, and Apache Struts, then you can enable this SDK with minimal configuration.
13+
without importing framework specific dependencies. Any framework built on Java [Servlet API](https://tomcat.apache.org/tomcat-5.5-doc/servletapi/javax/servlet/Servlet.html)
14+
such as Spring, Struts, Jersey, etc can use this SDK with minimal configuration.
1915

2016
[Source Code on GitHub](https://github.com/moesif/moesif-servlet)
2117

@@ -37,7 +33,7 @@ Add the Moesif dependency to your project's pom.xml file:
3733
<dependency>
3834
<groupId>com.moesif.servlet</groupId>
3935
<artifactId>moesif-servlet</artifactId>
40-
<version>1.5.9</version>
36+
<version>1.6.0</version>
4137
</dependency>
4238
```
4339

@@ -52,7 +48,7 @@ repositories {
5248
}
5349
5450
dependencies {
55-
compile 'com.moesif.servlet:moesif-servlet:1.5.9'
51+
compile 'com.moesif.servlet:moesif-servlet:1.6.0'
5652
}
5753
```
5854

@@ -169,7 +165,7 @@ mvn -v
169165
```
170166

171167

172-
5. Go to `http://localhost:8080/greeting` or the port that Spring Boot is running on.
168+
5. Go to `http://localhost:8080/api` or the port that Spring Boot is running on.
173169

174170
### Spring MVC (Java Config)
175171

@@ -225,41 +221,6 @@ In `web.xml` file:
225221
```
226222
You may have to override `onStartup()` to pass in the MoesifConfiguration object.
227223

228-
#### Running the Spring MVC example
229-
230-
In order to run this example you will need to have Java 7+ and Maven installed.
231-
232-
Before starting, check that your maven version is 3.0.x or above:
233-
234-
```sh
235-
mvn -v
236-
```
237-
238-
1. Clone the repository
239-
240-
```sh
241-
git clone https://github.com/Moesif/moesif-servlet
242-
cd moesif-servlet
243-
```
244-
245-
2. Update MyConfig to use your own Moesif ApplicationId
246-
(Register for an account on [moesif.com](https://www.moesif.com))
247-
248-
```sh
249-
vim spring-mvc-example/src/main/webapp/WEB-INF/web.xml
250-
```
251-
252-
3. Run spring-mvc-example
253-
254-
```sh
255-
cd spring-mvc-example
256-
mvn jetty:run
257-
```
258-
259-
4. Go to `http://localhost:8080/api/json`. In your Moesif Account, you should see event logged and monitored.
260-
261-
Shut it down manually with Ctrl-C.
262-
263224
### Jersey Servlet
264225

265226
There are multiple ways to run Jersey, as a Java Servlet or embedded with a Java NIO framework like Grizzly. This subsection focuses on running Jersey as a Servlet.

moesif-servlet/pom.xml

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.moesif.servlet</groupId>
55
<artifactId>moesif-servlet</artifactId>
6-
<version>1.5.9</version>
6+
<version>1.6.0</version>
77
<packaging>jar</packaging>
88
<name>moesif-servlet</name>
99
<description>Moesif SDK for Java Servlet to log and analyze API calls</description>
@@ -24,7 +24,7 @@
2424
<developers>
2525
<developer>
2626
<id>moesif</id>
27-
<name>Moesif API Insights</name>
27+
<name>Moesif API Analytics</name>
2828
<email>[email protected]</email>
2929
<url>https://www.moesif.com</url>
3030
<organization>Moesif, Inc.</organization>
@@ -78,12 +78,6 @@
7878
<artifactId>commons-io</artifactId>
7979
<version>${commons-io.version}</version>
8080
</dependency>
81-
<dependency>
82-
<groupId>org.apache.tomcat</groupId>
83-
<artifactId>catalina</artifactId>
84-
<version>6.0.16</version>
85-
</dependency>
86-
8781

8882
<!-- testing -->
8983
<dependency>

moesif-servlet/src/main/java/com/moesif/servlet/MoesifConfiguration.java

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,15 @@
66

77
public class MoesifConfiguration {
88

9-
public boolean skip(HttpServletRequest request, HttpServletResponse response) {
10-
return false;
11-
}
12-
13-
public EventModel maskContent(EventModel eventModel) {
14-
return eventModel;
15-
}
16-
179
public String identifyUser(HttpServletRequest request, HttpServletResponse response) {
18-
return null;
10+
try {
11+
if (request.getUserPrincipal() == null) {
12+
return null;
13+
}
14+
return request.getUserPrincipal().getName();
15+
} catch (Exception e) {
16+
return null;
17+
}
1918
}
2019

2120
public String identifyCompany(HttpServletRequest request, HttpServletResponse response) {
@@ -26,11 +25,6 @@ public String getSessionToken(HttpServletRequest request, HttpServletResponse re
2625
return null;
2726
}
2827

29-
@Deprecated
30-
public String getTags(HttpServletRequest request, HttpServletResponse response) {
31-
return null;
32-
}
33-
3428
public String getApiVersion(HttpServletRequest request, HttpServletResponse response) {
3529
return null;
3630
}
@@ -39,5 +33,18 @@ public Object getMetadata(HttpServletRequest request, HttpServletResponse respon
3933
return null;
4034
}
4135

36+
public boolean skip(HttpServletRequest request, HttpServletResponse response) {
37+
return false;
38+
}
39+
40+
public EventModel maskContent(EventModel eventModel) {
41+
return eventModel;
42+
}
43+
4244
public boolean disableTransactionId = false;
45+
46+
@Deprecated
47+
public String getTags(HttpServletRequest request, HttpServletResponse response) {
48+
return null;
49+
}
4350
}

moesif-servlet/src/main/java/com/moesif/servlet/MoesifFilter.java

Lines changed: 25 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import com.moesif.servlet.wrappers.LoggingHttpServletRequestWrapper;
3232
import com.moesif.servlet.wrappers.LoggingHttpServletResponseWrapper;
3333
import org.apache.commons.lang3.StringUtils;
34-
import org.apache.catalina.connector.ResponseFacade;
3534

3635
public class MoesifFilter implements Filter {
3736

@@ -214,25 +213,17 @@ public int getAppConfig(String cachedConfigEtag) throws Throwable {
214213
try {
215214
Map<String, Object> appConfig = this.configDict.get(responseConfigEtag);
216215
// Get the sample rate and update last updated time
217-
if (!appConfig.isEmpty()) {
218-
sampleRate = (int) appConfig.getOrDefault("sample_rate", 100);
219-
this.lastUpdatedTime = new Date();
216+
if (!appConfig.isEmpty() && appConfig.containsKey("sample_rate")) {
217+
sampleRate = (Integer) appConfig.get("sample_rate");
220218
}
221-
else {
222-
// Upate last updated time
223-
this.lastUpdatedTime = new Date();
224-
}
225-
}
226-
catch(Exception e) {
227-
// Upate last updated time
228-
this.lastUpdatedTime = new Date();
229-
}
219+
} catch(Exception e) {
220+
logger.warning("getConfig() call failed " + e.toString());
221+
}
230222
} catch(Exception e) {
231-
// Upate last updated time
232-
logger.warning("getConfig call failed " + e.toString());
233-
this.lastUpdatedTime = new Date();
223+
logger.warning("getConfig() call failed " + e.toString());
234224
}
235-
return sampleRate;
225+
this.lastUpdatedTime = new Date();
226+
return sampleRate;
236227
}
237228

238229
public void updateUser(UserModel userModel) throws Throwable{
@@ -384,35 +375,24 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
384375
startDate, config.getApiVersion(httpRequest, httpResponse), transactionId);
385376

386377
// pass to next step in the chain.
387-
filterChain.doFilter(requestWrapper, responseWrapper);
388-
389-
if(!(responseWrapper.delegate instanceof ResponseFacade)) {
390-
391-
if (responseWrapper.getHeaders() != null &&
392-
!responseWrapper.getHeaders().isEmpty() &&
393-
responseWrapper.getHeaders().get("Content-Type").toLowerCase().contains("html")) {
394-
if (debug) {
395-
logger.warning("MoesifFilter was called for html response, skipping send Event to Moesif");
396-
}
397-
filterChain.doFilter(request, response);
398-
return;
399-
}
378+
try {
379+
filterChain.doFilter(requestWrapper, responseWrapper);
380+
} finally {
381+
Date endDate = new Date();
382+
EventResponseModel eventResponseModel = getEventResponseModel(responseWrapper, endDate);
383+
384+
if (!(responseWrapper.getResponse() instanceof LoggingHttpServletResponseWrapper)) {
385+
sendEvent(
386+
eventRequestModel,
387+
eventResponseModel,
388+
config.identifyUser(httpRequest, httpResponse),
389+
config.identifyCompany(httpRequest, httpResponse),
390+
config.getSessionToken(httpRequest, httpResponse),
391+
config.getTags(httpRequest, httpResponse),
392+
config.getMetadata(httpRequest, httpResponse)
393+
);
394+
}
400395
}
401-
402-
Date endDate = new Date();
403-
EventResponseModel eventResponseModel = getEventResponseModel(responseWrapper, endDate);
404-
405-
httpResponse.getOutputStream().write(responseWrapper.getContentAsBytes());
406-
407-
sendEvent(
408-
eventRequestModel,
409-
eventResponseModel,
410-
config.identifyUser(httpRequest, httpResponse),
411-
config.identifyCompany(httpRequest, httpResponse),
412-
config.getSessionToken(httpRequest, httpResponse),
413-
config.getTags(httpRequest, httpResponse),
414-
config.getMetadata(httpRequest, httpResponse)
415-
);
416396
}
417397

418398

moesif-servlet/src/main/java/com/moesif/servlet/wrappers/LoggingHttpServletRequestWrapper.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@
1515
import java.io.InputStreamReader;
1616
import java.nio.charset.StandardCharsets;
1717
import java.util.*;
18-
import java.util.Map.Entry;
19-
import java.util.stream.Collectors;
2018

2119
public class LoggingHttpServletRequestWrapper extends HttpServletRequestWrapper {
2220

@@ -111,7 +109,7 @@ public String getContent() {
111109

112110
private byte[] getContentFromParameterMap(Map<String, String[]> parameterMap) {
113111

114-
List<String> result = new ArrayList<>();
112+
List<String> result = new ArrayList<String>();
115113
for (Map.Entry<String, String[]> e: parameterMap.entrySet()) {
116114
String[] value = e.getValue();
117115
result.add(e.getKey() + "=" + (value.length == 1 ? value[0] : Arrays.toString(value)));

0 commit comments

Comments
 (0)