Skip to content

Commit 565fe80

Browse files
authored
Merge pull request aol#291 from aol/pcollections-module
Jackson pcollections support
2 parents fe17a83 + e1bcd9b commit 565fe80

File tree

13 files changed

+140
-61
lines changed

13 files changed

+140
-61
lines changed

gradle.properties

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
version=0.90
2-
springVersion=4.3.2.RELEASE
3-
springBootVersion=1.4.0.RELEASE
4-
jerseyVersion=2.23.2
5-
grizzlyVersion=2.3.26
2+
springVersion=4.3.3.RELEASE
3+
springBootVersion=1.4.1.RELEASE
4+
jerseyVersion=2.24
5+
grizzlyVersion=2.3.28
66
cyclopsReactVersion=1.0.2
77
cyclopsVersion=8.2.1
88
hamcrestVersion=1.3
99
hibernateVersion=5.1.0.Final
1010
hibernateValidator=5.2.4.Final
11-
springDataJPA=1.10.1.RELEASE
12-
guavaVersion=19.0
11+
springDataJPA=1.10.5.RELEASE
12+
guavaVersion=20.0
1313
javaslangDatatypeVersion=2.0.4
1414
javaslangVersion=2.0.4
15-
jacksonVersion=2.6.3
16-
guavaDatatypeVersion=2.6.3
15+
jacksonVersion=2.8.4
16+
guavaDatatypeVersion=2.8.4
17+
pcollectionsDatatypeVersion=2.8.4
1718
logbackVersion=1.1.3
1819
slf4jVersion=1.7.13
1920
aspectJVersion=1.8.7

micro-event-metrics/src/test/java/app/event/metrics/com/aol/micro/server/EventRunnerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public void runAppAndBasicTest() throws InterruptedException, ExecutionException
5555
String json2 = rest.getJson("http://localhost:8080/event-app/status/meters");
5656
Map<String, Integer> map2 = JacksonUtil.convertFromJson(json2, Map.class);
5757

58-
assertThat(json2, map2.get("com.aol.micro.server.event.metrics.MetricsCatcher.request-start-default"),
58+
assertThat(json2, map2.get("com.aol.micro.server.event.metrics.MetricsCatcher.request-start-default-meter"),
5959
greaterThan(0));
6060

6161
}

micro-event-metrics/src/test/java/app/event/metrics/com/aol/micro/server/Job.java renamed to micro-event-metrics/src/test/java/app/event/metrics/com/aol/micro/server/EventsJob.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import com.aol.micro.server.events.SystemData;
77

88
@Component
9-
public class Job implements ScheduledJob<Job> {
9+
public class EventsJob implements ScheduledJob<EventsJob> {
1010

1111
@Override
1212
public SystemData<String, String> scheduleAndLog() {

micro-event-metrics/src/test/java/app/event/metrics/com/aol/micro/server/Schedular.java renamed to micro-event-metrics/src/test/java/app/event/metrics/com/aol/micro/server/EventsSchedular.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
import org.springframework.stereotype.Component;
66

77
@Component
8-
public class Schedular {
8+
public class EventsSchedular {
99

10-
private final Job job;
10+
private final EventsJob job;
1111

1212
@Autowired
13-
public Schedular(final Job job) {
13+
public EventsSchedular(final EventsJob job) {
1414
this.job = job;
1515
}
1616

micro-event-metrics/src/test/java/com/aol/micro/server/event/metrics/MetricsCatcherTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public void queriesStartMeterInc() {
4141
.correlationId(10l)
4242
.type("test")
4343
.build()));
44-
assertThat(registry.meter(this.config.getPrefix() + ".request-start-test")
44+
assertThat(registry.meter(this.config.getPrefix() + ".request-start-test-meter")
4545
.getMeanRate(),
4646
greaterThan(0.0));
4747
}

micro-events/src/test/java/NoPackageTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ public class NoPackageTest {
1111

1212
@Test
1313
public void testPackageNone() {
14-
assertThat(one.getType(NoPackageTest.class), equalTo("NoPackage"));
14+
assertThat(one.getType(NoPackageTest.class), equalTo("NoPackageTest"));
1515
}
1616
}

micro-guava/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ description = 'micro-guava'
22
dependencies {
33
compile 'com.aol.cyclops:cyclops-guava:'+cyclopsVersion
44
compile 'com.fasterxml.jackson.datatype:jackson-datatype-guava:'+guavaDatatypeVersion
5-
65
compile project(':micro-core')
76
compile project(':micro-jackson-configuration')
87
testCompile project(':micro-grizzly')

micro-hibernate/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ dependencies {
55
exclude group: 'org.jboss.logging'
66
}
77
compile 'javax.transaction:jta:'+jtaVersion
8-
compile group: 'org.hibernate', name: 'hibernate-core', version:hibernateVersion
8+
compile (group: 'org.hibernate', name: 'hibernate-core', version:hibernateVersion)
99
compile group: 'org.hibernate', name: 'hibernate-entitymanager', version:hibernateVersion
1010
compile group: 'org.springframework', name: 'spring-orm', version:"${springVersion}"
1111

micro-jackson-configuration/build.gradle

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
description = 'micro-jackson-configuration'
22
dependencies {
3-
compile project(':micro-core')
3+
// compile 'com.fasterxml.jackson.datatype:jackson-datatype-pcollections'+pcollectionsDatatypeVersion
4+
compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-pcollections', version: '2.8.4'
5+
compile project(':micro-core')
46

57
}
68

micro-jackson-configuration/readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
Add Jackson Serialization to Microserver apps & add custom configurations as neccessary.
77

8+
Includes serializers and deserializers for pCollections.
9+
810
## Configurable Properties
911

1012
properties = default

micro-jackson-configuration/src/main/java/com/aol/micro/server/jackson/JacksonPlugin.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,28 @@
33
import com.aol.cyclops.data.collections.extensions.persistent.PSetX;
44
import com.aol.micro.server.Plugin;
55
import com.aol.micro.server.rest.jackson.JacksonFeature;
6+
import com.fasterxml.jackson.databind.Module;
7+
import com.fasterxml.jackson.datatype.pcollections.PCollectionsModule;
68

79
public class JacksonPlugin implements Plugin {
810

9-
@Override
10-
public PSetX<Class<?>> jaxRsResources() {
11+
@Override
12+
public PSetX<Class<?>> jaxRsResources() {
1113

12-
return PSetX.of(JacksonFeature.class);
13-
14-
}
14+
return PSetX.of(JacksonFeature.class);
1515

16-
@Override
17-
public PSetX<Class> springClasses() {
16+
}
1817

19-
return PSetX.of(CoreJacksonConfigurator.class,JacksonConfigurers.class);
20-
21-
}
18+
@Override
19+
public PSetX<Class> springClasses() {
20+
21+
return PSetX.of(CoreJacksonConfigurator.class, JacksonConfigurers.class);
22+
23+
}
24+
25+
@Override
26+
public PSetX<Module> jacksonModules() {
27+
return PSetX.of(new PCollectionsModule());
28+
}
2229

2330
}

micro-jackson-configuration/src/test/java/com/aol/micro/server/rest/JacksonUtilTest.java

Lines changed: 46 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.aol.micro.server.rest;
22

3-
43
import static junit.framework.Assert.assertTrue;
4+
import static org.hamcrest.CoreMatchers.equalTo;
5+
import static org.junit.Assert.assertThat;
56

67
import java.util.ArrayList;
78
import java.util.List;
@@ -12,50 +13,62 @@
1213
import javax.xml.bind.annotation.XmlRootElement;
1314
import javax.xml.bind.annotation.XmlType;
1415

15-
import lombok.Getter;
16-
import lombok.Setter;
17-
1816
import org.junit.Test;
17+
import org.pcollections.ConsPStack;
18+
import org.pcollections.PStack;
1919

20+
import com.aol.cyclops.data.collections.extensions.persistent.PStackX;
2021
import com.aol.micro.server.rest.jackson.JacksonUtil;
2122

23+
import lombok.Getter;
24+
import lombok.Setter;
2225

2326
public class JacksonUtilTest {
24-
25-
26-
@Test
27-
public void generateSampleRequest() {
28-
29-
DummyQueryRequest request = new DummyQueryRequest();
30-
request.getData().add("blah");
31-
32-
assertTrue(JacksonUtil.serializeToJson(request).contains("strData"));
33-
34-
}
35-
36-
37-
@Test
38-
public void serialiseAndDeserialise(){
39-
DummyQueryRequest request = new DummyQueryRequest();
40-
request.getData().add("blah");
41-
String requestStr = (String) JacksonUtil.serializeToJsonLogFailure(request);
42-
DummyQueryRequest requestDeserialised = JacksonUtil.convertFromJson(requestStr, DummyQueryRequest.class);
43-
assertTrue(request.getData().contains("blah"));
44-
}
45-
46-
27+
28+
@Test
29+
public void generateSampleRequest() {
30+
31+
DummyQueryRequest request = new DummyQueryRequest();
32+
request.getData()
33+
.add("blah");
34+
35+
assertTrue(JacksonUtil.serializeToJson(request)
36+
.contains("strData"));
37+
38+
}
39+
40+
@Test
41+
public void serialiseAndDeserialise() {
42+
DummyQueryRequest request = new DummyQueryRequest();
43+
request.getData()
44+
.add("blah");
45+
String requestStr = (String) JacksonUtil.serializeToJsonLogFailure(request);
46+
DummyQueryRequest requestDeserialised = JacksonUtil.convertFromJson(requestStr, DummyQueryRequest.class);
47+
assertTrue(request.getData()
48+
.contains("blah"));
49+
}
50+
51+
@Test
52+
public void serializeToPStack() {
53+
54+
PStackX<Integer> list = PStackX.of(1, 2, 3, 4);
55+
String jsonString = JacksonUtil.serializeToJson(list);
56+
57+
PStack<Integer> stack = JacksonUtil.convertFromJson(jsonString, ConsPStack.class);
58+
59+
assertThat(stack, equalTo(list.reverse()));
60+
}
61+
4762
}
4863

4964
@XmlAccessorType(XmlAccessType.FIELD)
5065
@XmlRootElement(name = "queryRequest")
5166
@XmlType(name = "")
5267
class DummyQueryRequest {
5368

54-
@XmlElement(name = "strData")
55-
@Getter
56-
@Setter
57-
private List<String> data = new ArrayList();
69+
@XmlElement(name = "strData")
70+
@Getter
71+
@Setter
72+
private List<String> data = new ArrayList();
5873

59-
6074
}
61-
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.aol.micro.server.testing;
2+
3+
import java.util.List;
4+
5+
import javax.ws.rs.client.Client;
6+
import javax.ws.rs.client.ClientBuilder;
7+
import javax.ws.rs.client.Entity;
8+
import javax.ws.rs.client.Invocation.Builder;
9+
import javax.ws.rs.client.WebTarget;
10+
import javax.ws.rs.core.MediaType;
11+
12+
import com.aol.micro.server.rest.jackson.JacksonUtil;
13+
14+
public class RestAgent {
15+
16+
17+
public String getJson(String url) {
18+
19+
Client client = ClientBuilder.newClient();
20+
21+
WebTarget resource = client.target(url);
22+
23+
Builder request = resource.request();
24+
request.accept(MediaType.APPLICATION_JSON);
25+
26+
return request.get(String.class);
27+
28+
}
29+
30+
public String get(String url) {
31+
32+
Client client = ClientBuilder.newClient();
33+
34+
WebTarget resource = client.target(url);
35+
36+
Builder request = resource.request();
37+
request.accept(MediaType.TEXT_PLAIN);
38+
39+
return request.get(String.class);
40+
41+
}
42+
43+
public<T> T post(String url, Object payload,Class<T> type) {
44+
Client client = ClientBuilder.newClient();
45+
46+
WebTarget resource = client.target(url);
47+
48+
Builder request = resource.request();
49+
request.accept(MediaType.APPLICATION_JSON);
50+
51+
return request.post(Entity.entity(JacksonUtil.serializeToJson(payload),MediaType.APPLICATION_JSON), type);
52+
}
53+
54+
55+
}

0 commit comments

Comments
 (0)