Skip to content

Commit 0583937

Browse files
added data services
1 parent 576729f commit 0583937

28 files changed

+1446
-0
lines changed

data-services/pom.xml

+142
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
<?xml version="1.0"?>
2+
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
3+
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4+
<modelVersion>4.0.0</modelVersion>
5+
<groupId>com.atg.openssp</groupId>
6+
<artifactId>open-ssp-data-services</artifactId>
7+
<version>0.1-SNAPSHOT</version>
8+
<name>open-ssp-data-services</name>
9+
<url>http://maven.apache.org</url>
10+
<packaging>war</packaging>
11+
<properties>
12+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
13+
<my.dev.catalina.home>y</my.dev.catalina.home>
14+
</properties>
15+
<profiles>
16+
<profile>
17+
<id>mock-catalina-home</id>
18+
<activation>
19+
<property>
20+
<name>!env.catalina.home</name>
21+
</property>
22+
</activation>
23+
<build>
24+
<plugins>
25+
<plugin>
26+
<groupId>org.apache.maven.plugins</groupId>
27+
<artifactId>maven-compiler-plugin</artifactId>
28+
<version>3.5.1</version>
29+
<configuration>
30+
<source>1.8</source>
31+
<target>1.8</target>
32+
</configuration>
33+
</plugin>
34+
<plugin>
35+
<groupId>org.apache.maven.plugins</groupId>
36+
<artifactId>maven-surefire-plugin</artifactId>
37+
<configuration>
38+
<systemProperties>
39+
<property>
40+
<name>catalina.home</name>
41+
<value>${my.dev.catalina.home}</value>
42+
</property>
43+
</systemProperties>
44+
</configuration>
45+
</plugin>
46+
</plugins>
47+
</build>
48+
</profile>
49+
</profiles>
50+
51+
<build>
52+
<finalName>ssp-data-provider</finalName>
53+
<plugins>
54+
<plugin>
55+
<groupId>org.apache.tomcat.maven</groupId>
56+
<artifactId>tomcat7-maven-plugin</artifactId>
57+
<version>2.2</version>
58+
<configuration>
59+
<path>/${project.build.finalName}</path>
60+
<uriEncoding>utf-8</uriEncoding>
61+
<systemProperties>
62+
<JAVA_OPTS>-Xms512m -Xmx1024m</JAVA_OPTS>
63+
</systemProperties>
64+
<port>9090</port>
65+
</configuration>
66+
</plugin>
67+
68+
<plugin>
69+
<groupId>org.codehaus.mojo</groupId>
70+
<artifactId>properties-maven-plugin</artifactId>
71+
<version>1.0.0</version>
72+
<configuration>
73+
<properties></properties>
74+
<outputFile>
75+
${project.build.outputDirectory}/app.properties
76+
</outputFile>
77+
</configuration>
78+
<executions>
79+
<execution>
80+
<phase>generate-resources</phase>
81+
<goals>
82+
<goal>write-project-properties</goal>
83+
</goals>
84+
</execution>
85+
</executions>
86+
</plugin>
87+
88+
<plugin>
89+
<groupId>org.apache.maven.plugins</groupId>
90+
<artifactId>maven-war-plugin</artifactId>
91+
<version>2.6</version>
92+
</plugin>
93+
</plugins>
94+
</build>
95+
<dependencies>
96+
97+
<dependency>
98+
<groupId>junit</groupId>
99+
<artifactId>junit</artifactId>
100+
<version>3.8.1</version>
101+
<scope>test</scope>
102+
</dependency>
103+
<dependency>
104+
<groupId>javax.servlet</groupId>
105+
<artifactId>javax.servlet-api</artifactId>
106+
<version>3.1.0</version>
107+
<scope>provided</scope>
108+
</dependency>
109+
<dependency>
110+
<groupId>com.google.code.gson</groupId>
111+
<artifactId>gson</artifactId>
112+
<version>2.6.2</version>
113+
</dependency>
114+
<dependency>
115+
<groupId>org.apache.logging.log4j</groupId>
116+
<artifactId>log4j-core</artifactId>
117+
<version>2.6.2</version>
118+
</dependency>
119+
<dependency>
120+
<groupId>org.apache.logging.log4j</groupId>
121+
<artifactId>log4j-slf4j-impl</artifactId>
122+
<version>2.8</version>
123+
</dependency>
124+
125+
<dependency>
126+
<groupId>com.atg.openssp</groupId>
127+
<artifactId>open-ssp-common</artifactId>
128+
<version>0.3-SNAPSHOT</version>
129+
</dependency>
130+
<dependency>
131+
<groupId>com.atg.openssp</groupId>
132+
<artifactId>core</artifactId>
133+
<version>0.3-SNAPSHOT</version>
134+
</dependency>
135+
<dependency>
136+
<groupId>com.atg.openssp</groupId>
137+
<artifactId>open-ssp-openrtb</artifactId>
138+
<version>0.3-SNAPSHOT</version>
139+
</dependency>
140+
141+
</dependencies>
142+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.atg.openssp.dataprovider.provider.dto;
2+
3+
/**
4+
* @author André Schmer
5+
*/
6+
public class TokenWrapper {
7+
private String token;
8+
9+
public String getToken() {
10+
return token;
11+
}
12+
13+
@SuppressWarnings("unused")
14+
public void setToken(final String token) {
15+
this.token = token;
16+
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.atg.openssp.dataprovider.provider.handler;
2+
3+
import com.atg.openssp.core.cache.broker.dto.AppDto;
4+
import com.atg.openssp.core.system.LocalContext;
5+
import com.google.gson.Gson;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
import util.properties.ProjectProperty;
9+
10+
import javax.servlet.http.HttpServletRequest;
11+
import javax.servlet.http.HttpServletResponse;
12+
import javax.xml.bind.PropertyException;
13+
import java.io.IOException;
14+
import java.io.OutputStream;
15+
import java.nio.charset.StandardCharsets;
16+
import java.nio.file.Files;
17+
import java.nio.file.Paths;
18+
import java.util.Map;
19+
20+
/**
21+
* @author Brian Sorensen
22+
*/
23+
public class AppDataHandler extends DataHandler {
24+
private static final Logger log = LoggerFactory.getLogger(AppDataHandler.class);
25+
public static final String CONTEXT = "/lookup/app";
26+
27+
public AppDataHandler(HttpServletRequest request, HttpServletResponse response) {
28+
if (LocalContext.isAppDataServiceEnabled()) {
29+
try {
30+
String location;
31+
try {
32+
location = ProjectProperty.getPropertiesResourceLocation()+"/";
33+
} catch (PropertyException e) {
34+
log.warn("property file not found.");
35+
location="";
36+
}
37+
Gson gson = new Gson();
38+
String content = new String(Files.readAllBytes(Paths.get(location+"app_db.json")), StandardCharsets.UTF_8);
39+
40+
AppDto data = gson.fromJson(content, AppDto.class);
41+
42+
Map<String,String> parms = queryToMap(request.getQueryString());
43+
String t = parms.get("t");
44+
45+
if (LoginHandler.TOKEN.equals(t)) {
46+
String result = new Gson().toJson(data);
47+
48+
response.setStatus(200);
49+
response.setContentType("application/json; charset=UTF8");
50+
OutputStream os = response.getOutputStream();
51+
os.write(result.getBytes());
52+
os.close();
53+
} else {
54+
response.setStatus(401);
55+
}
56+
} catch (IOException e) {
57+
response.setStatus(500);
58+
log.error(e.getMessage(), e);
59+
}
60+
} else {
61+
response.setStatus(404);
62+
}
63+
}
64+
65+
@Override
66+
public void cleanUp() {
67+
68+
}
69+
70+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package com.atg.openssp.dataprovider.provider.handler;
2+
3+
import com.atg.openssp.core.cache.broker.dto.CurrencyDto;
4+
import com.atg.openssp.core.system.LocalContext;
5+
import com.google.gson.Gson;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
import util.properties.ProjectProperty;
9+
10+
import javax.servlet.http.HttpServletRequest;
11+
import javax.servlet.http.HttpServletResponse;
12+
import javax.xml.bind.PropertyException;
13+
import java.io.IOException;
14+
import java.io.OutputStream;
15+
import java.nio.charset.StandardCharsets;
16+
import java.nio.file.Files;
17+
import java.nio.file.Paths;
18+
import java.util.Map;
19+
20+
/**
21+
* @author Brian Sorensen
22+
*/
23+
public class CurrencyDataHandler extends DataHandler {
24+
private static final Logger log = LoggerFactory.getLogger(CurrencyDataHandler.class);
25+
public static final String CONTEXT = "/lookup/eurref";
26+
27+
public CurrencyDataHandler(HttpServletRequest request, HttpServletResponse response) {
28+
if (LocalContext.isCurrencyDataServiceEnabled()) {
29+
try {
30+
String location;
31+
try {
32+
location = ProjectProperty.getPropertiesResourceLocation()+"/";
33+
} catch (PropertyException e) {
34+
log.warn("property file not found.");
35+
location="";
36+
}
37+
Gson gson = new Gson();
38+
String content = new String(Files.readAllBytes(Paths.get(location+"currency_db.json")), StandardCharsets.UTF_8);
39+
CurrencyDto data = gson.fromJson(content, CurrencyDto.class);
40+
41+
Map<String,String> parms = queryToMap(request.getQueryString());
42+
String t = parms.get("t");
43+
44+
if (LoginHandler.TOKEN.equals(t)) {
45+
String result = new Gson().toJson(data);
46+
47+
response.setStatus(200);
48+
response.setContentType("application/json; charset=UTF8");
49+
OutputStream os = response.getOutputStream();
50+
os.write(result.getBytes());
51+
os.close();
52+
} else {
53+
response.setStatus(401);
54+
}
55+
} catch (IOException e) {
56+
response.setStatus(500);
57+
log.error(e.getMessage(), e);
58+
}
59+
} else {
60+
response.setStatus(404);
61+
}
62+
}
63+
64+
@Override
65+
public void cleanUp() {
66+
67+
}
68+
69+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package com.atg.openssp.dataprovider.provider.handler;
2+
3+
import javax.servlet.http.HttpServletRequest;
4+
import java.io.*;
5+
import java.net.URLDecoder;
6+
import java.util.ArrayList;
7+
import java.util.HashMap;
8+
import java.util.List;
9+
import java.util.Map;
10+
11+
/**
12+
* @author André Schmer
13+
*/
14+
public abstract class DataHandler {
15+
public abstract void cleanUp();
16+
17+
protected static Map<String, String> queryToMap(String query){
18+
Map<String, String> result = new HashMap<String, String>();
19+
if (query != null) {
20+
for (String param : query.split("&")) {
21+
String pair[] = param.split("=");
22+
if (pair.length>1) {
23+
result.put(pair[0], pair[1]);
24+
}else{
25+
result.put(pair[0], "");
26+
}
27+
}
28+
}
29+
return result;
30+
}
31+
32+
protected static String queryFromBodyString(InputStream is){
33+
BufferedReader br = new BufferedReader(new InputStreamReader(is));
34+
String query;
35+
try {
36+
query = br.readLine();
37+
} catch (IOException e) {
38+
e.printStackTrace();
39+
query="";
40+
}
41+
return query;
42+
}
43+
44+
protected static Map<String, String> attributesToMap(HttpServletRequest request){
45+
Map<String, String> result = (Map<String, String>) request.getAttribute("attributes");
46+
if (result == null) {
47+
result = new HashMap<String, String>();
48+
}
49+
return result;
50+
}
51+
52+
protected void populateFromBody(Map<String, String> parameters, String query) {
53+
if (query != null) {
54+
String pairs[] = query.split("[&]");
55+
56+
for (String pair : pairs) {
57+
String param[] = pair.split("[=]");
58+
59+
String key = null;
60+
String value = null;
61+
if (param.length > 0) {
62+
try {
63+
key = URLDecoder.decode(param[0], "UTF-8");
64+
} catch (UnsupportedEncodingException e) {
65+
key = param[0];
66+
}
67+
}
68+
69+
if (param.length > 1) {
70+
try {
71+
value = URLDecoder.decode(param[1], "UTF-8");
72+
} catch (UnsupportedEncodingException e) {
73+
value = param[1];
74+
}
75+
}
76+
77+
if (parameters.containsKey(key)) {
78+
Object obj = parameters.get(key);
79+
if(obj instanceof List<?>) {
80+
List<String> values = (List<String>)obj;
81+
values.add(value);
82+
} else if(obj instanceof String) {
83+
List<String> values = new ArrayList<String>();
84+
values.add((String)obj);
85+
values.add(value);
86+
}
87+
} else {
88+
parameters.put(key, value);
89+
}
90+
}
91+
}
92+
}
93+
94+
}

0 commit comments

Comments
 (0)