Skip to content

Commit 40a71dd

Browse files
committed
Refactoring and code cleanup
1 parent a148456 commit 40a71dd

File tree

78 files changed

+1032
-562
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1032
-562
lines changed

build-and-restart-service.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ for SN in $* ; do
44

55
./gradlew :${SN?}:assemble
66
docker-compose build ${SN?}
7-
docker-compose up -d ${SN?}
7+
docker-compose up -d --force-recreate ${SN?}
88
done
99

1010
docker-compose logs -f $*

ftgo-application/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ dependencies {
44
compile project(":ftgo-consumer-service")
55
compile project(":ftgo-order-service")
66
compile project(":ftgo-restaurant-service")
7+
compile project(":ftgo-courier-service")
78

89
compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion"
910
compile "org.springframework.boot:spring-boot-starter-web:$springBootVersion"

ftgo-application/src/main/resources/application.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ spring.application.name=ftgo-application
33
spring.jpa.generate-ddl=true
44
logging.level.org.springframework.orm.jpa=INFO
55
logging.level.org.hibernate.SQL=DEBUG
6-
spring.datasource.url=jdbc:mysql://${DOCKER_HOST_IP:localhost}/eventuate
6+
spring.datasource.url=jdbc:mysql://${DOCKER_HOST_IP:localhost}/ftgo
77
spring.datasource.username=mysqluser
88
spring.datasource.password=mysqlpw
99
spring.datasource.driver.class.name=com.mysql.jdbc.Driver

ftgo-common-jpa/build.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
dependencies {
22

33
compile "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
4-
4+
compile project(":ftgo-common")
55
}

ftgo-common-jpa/src/main/resources/META-INF/orm.xml

+14
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,18 @@
1010
</basic>
1111
</attributes>
1212
</embeddable>
13+
<embeddable class="net.chrisrichardson.ftgo.common.Address" access="FIELD">
14+
<attributes>
15+
<basic name="street1">
16+
</basic>
17+
<basic name="street2">
18+
</basic>
19+
<basic name="city">
20+
</basic>
21+
<basic name="state">
22+
</basic>
23+
<basic name="zip">
24+
</basic>
25+
</attributes>
26+
</embeddable>
1327
</entity-mappings>

ftgo-common/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ dependencies {
77
compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.9.7'
88
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.7'
99
compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
10+
compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.9.7"
1011

1112
compile 'mysql:mysql-connector-java:5.1.39'
1213

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package net.chrisrichardson.ftgo.common;
2+
3+
import javax.persistence.Access;
4+
import javax.persistence.AccessType;
5+
import javax.persistence.Embeddable;
6+
7+
@Embeddable
8+
@Access(AccessType.FIELD)
9+
public class Address {
10+
11+
private String street1;
12+
private String street2;
13+
private String city;
14+
private String state;
15+
private String zip;
16+
17+
}

ftgo-common/src/main/java/net/chrisrichardson/ftgo/common/CommonConfiguration.java

-4
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,13 @@
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
5-
import org.springframework.boot.autoconfigure.domain.EntityScan;
65
import org.springframework.context.annotation.Bean;
76
import org.springframework.context.annotation.ComponentScan;
87
import org.springframework.context.annotation.Configuration;
9-
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
108

119
@Configuration
1210
@EnableAutoConfiguration
1311
@ComponentScan
14-
@EntityScan
15-
@EnableJpaRepositories
1612
public class CommonConfiguration {
1713

1814
@Bean

ftgo-common/src/main/java/net/chrisrichardson/ftgo/common/CommonJsonMapperInitializer.java

+5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package net.chrisrichardson.ftgo.common;
22

33
import com.fasterxml.jackson.databind.ObjectMapper;
4+
import com.fasterxml.jackson.databind.SerializationFeature;
5+
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
46
import org.springframework.beans.factory.annotation.Autowired;
57

68
import javax.annotation.PostConstruct;
@@ -13,5 +15,8 @@ public class CommonJsonMapperInitializer {
1315
@PostConstruct
1416
public void initialize() {
1517
objectMapper.registerModule(new MoneyModule());
18+
objectMapper.registerModule(new JavaTimeModule());
19+
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
20+
1621
}
1722
}

ftgo-common/src/main/resources/application.properties

-19
This file was deleted.

ftgo-common/src/test/java/net/chrisrichardson/ftgo/common/MoneyTest.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33

44
import org.junit.Test;
55

6-
import static org.junit.Assert.assertEquals;
7-
import static org.junit.Assert.assertFalse;
8-
import static org.junit.Assert.assertTrue;
6+
import static org.junit.Assert.*;
97

108
public class MoneyTest {
119

ftgo-consumer-service/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
dependencies {
22
compile project(":common-swagger")
33
compile project(":ftgo-consumer-service-api")
4+
compile project(":ftgo-domain")
45

56
compile "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
67
compile "org.springframework.boot:spring-boot-starter-web:$springBootVersion"

ftgo-consumer-service/src/main/java/net/chrisrichardson/ftgo/consumerservice/domain/ConsumerConfiguration.java

+3-10
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
package net.chrisrichardson.ftgo.consumerservice.domain;
22

3-
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
4-
import org.springframework.boot.autoconfigure.domain.EntityScan;
3+
import net.chrisrichardson.ftgo.domain.DomainConfiguration;
54
import org.springframework.context.annotation.Bean;
6-
import org.springframework.context.annotation.ComponentScan;
75
import org.springframework.context.annotation.Configuration;
8-
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
9-
import org.springframework.transaction.annotation.EnableTransactionManagement;
6+
import org.springframework.context.annotation.Import;
107

118
@Configuration
12-
@EnableJpaRepositories
13-
@EnableAutoConfiguration
14-
@EnableTransactionManagement
15-
@EntityScan
16-
@ComponentScan
9+
@Import(DomainConfiguration.class)
1710
public class ConsumerConfiguration {
1811

1912
@Bean

ftgo-consumer-service/src/main/java/net/chrisrichardson/ftgo/consumerservice/domain/ConsumerService.java

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import net.chrisrichardson.ftgo.common.Money;
44
import net.chrisrichardson.ftgo.common.PersonName;
5+
import net.chrisrichardson.ftgo.domain.Consumer;
6+
import net.chrisrichardson.ftgo.domain.ConsumerRepository;
57
import org.springframework.beans.factory.annotation.Autowired;
68
import org.springframework.transaction.annotation.Transactional;
79

ftgo-consumer-service/src/main/java/net/chrisrichardson/ftgo/consumerservice/web/GetConsumerResponse.java

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import net.chrisrichardson.ftgo.common.PersonName;
44
import net.chrisrichardson.ftgo.consumerservice.api.web.CreateConsumerResponse;
5-
import net.chrisrichardson.ftgo.consumerservice.domain.Consumer;
65

76
public class GetConsumerResponse extends CreateConsumerResponse {
87
private PersonName name;

ftgo-courier-service-api/build.gradle

Whitespace-only changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package net.chrisrichardson.ftgo.courierservice.api;
2+
3+
public class CourierAvailability {
4+
5+
private boolean available;
6+
7+
public CourierAvailability() {
8+
}
9+
10+
public CourierAvailability(boolean available) {
11+
this.available = available;
12+
}
13+
14+
public boolean isAvailable() {
15+
return available;
16+
}
17+
18+
public void setAvailable(boolean available) {
19+
this.available = available;
20+
}
21+
}

ftgo-courier-service/build.gradle

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
dependencies {
2+
compile project(":ftgo-courier-service-api")
3+
4+
compile project(":common-swagger")
5+
compile project(":ftgo-domain")
6+
7+
compile "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
8+
compile "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion"
9+
compile "io.micrometer:micrometer-registry-prometheus:$micrometerVersion"
10+
compile "org.springframework.boot:spring-boot-starter-web:$springBootVersion"
11+
compile 'javax.el:javax.el-api:2.2.5'
12+
13+
testCompile "org.springframework.boot:spring-boot-starter-test:$springBootVersion"
14+
15+
testCompile 'io.rest-assured:rest-assured:3.0.6'
16+
testCompile 'io.rest-assured:spring-mock-mvc:3.0.6'
17+
testCompile "io.rest-assured:json-path:3.0.6"
18+
19+
testCompile project(":ftgo-test-util")
20+
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package net.chrisrichardson.ftgo.courierservice.domain;
2+
3+
4+
import net.chrisrichardson.ftgo.domain.CourierRepository;
5+
import org.springframework.transaction.annotation.Transactional;
6+
7+
public class CourierService {
8+
9+
private CourierRepository courierRepository;
10+
11+
public CourierService(CourierRepository courierRepository) {
12+
this.courierRepository = courierRepository;
13+
}
14+
15+
@Transactional
16+
public void updateAvailability(long courierId, boolean available) {
17+
if (available)
18+
noteAvailable(courierId);
19+
else
20+
noteUnavailable(courierId);
21+
}
22+
23+
void noteAvailable(long courierId) {
24+
courierRepository.findOrCreateCourier(courierId).noteAvailable();
25+
}
26+
27+
void noteUnavailable(long courierId) {
28+
courierRepository.findOrCreateCourier(courierId).noteUnavailable();
29+
}
30+
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package net.chrisrichardson.ftgo.courierservice.domain;
2+
3+
import net.chrisrichardson.ftgo.domain.CourierRepository;
4+
import net.chrisrichardson.ftgo.domain.DomainConfiguration;
5+
import org.springframework.context.annotation.Bean;
6+
import org.springframework.context.annotation.Configuration;
7+
import org.springframework.context.annotation.Import;
8+
9+
@Configuration
10+
@Import(DomainConfiguration.class)
11+
public class CourierServiceConfiguration {
12+
13+
@Bean
14+
public CourierService courierService(CourierRepository courierRepository) {
15+
return new CourierService(courierRepository);
16+
}
17+
18+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package net.chrisrichardson.ftgo.courierservice.web;
2+
3+
import net.chrisrichardson.ftgo.courierservice.api.CourierAvailability;
4+
import net.chrisrichardson.ftgo.courierservice.domain.CourierService;
5+
import org.springframework.http.HttpStatus;
6+
import org.springframework.http.ResponseEntity;
7+
import org.springframework.web.bind.annotation.*;
8+
9+
@RestController
10+
public class CourierController {
11+
12+
private CourierService deliveryService;
13+
14+
public CourierController(CourierService deliveryService) {
15+
this.deliveryService = deliveryService;
16+
}
17+
18+
@RequestMapping(path="/couriers/{courierId}/availability", method= RequestMethod.POST)
19+
public ResponseEntity<String> updateCourierLocation(@PathVariable long courierId, @RequestBody CourierAvailability availability) {
20+
deliveryService.updateAvailability(courierId, availability.isAvailable());
21+
return new ResponseEntity<>(HttpStatus.OK);
22+
}
23+
24+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package net.chrisrichardson.ftgo.courierservice.web;
2+
3+
import net.chrisrichardson.ftgo.courierservice.domain.CourierServiceConfiguration;
4+
import org.springframework.context.annotation.ComponentScan;
5+
import org.springframework.context.annotation.Configuration;
6+
import org.springframework.context.annotation.Import;
7+
8+
@Configuration
9+
@Import(CourierServiceConfiguration.class)
10+
@ComponentScan
11+
public class CourierWebConfiguration {
12+
}

ftgo-domain/build.gradle

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
dependencies {
2+
compile project(":ftgo-common")
3+
compile project(":ftgo-common-jpa")
4+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package net.chrisrichardson.ftgo.domain;
2+
3+
import javax.persistence.Embeddable;
4+
import javax.persistence.EnumType;
5+
import javax.persistence.Enumerated;
6+
import javax.persistence.ManyToOne;
7+
import java.time.LocalDateTime;
8+
9+
@Embeddable
10+
public class Action {
11+
12+
@Enumerated(EnumType.STRING)
13+
private ActionType type;
14+
private LocalDateTime time;
15+
16+
@ManyToOne
17+
private Order order;
18+
19+
private Action() {
20+
}
21+
22+
public Action(ActionType type, Order order, LocalDateTime time) {
23+
this.type = type;
24+
this.order = order;
25+
this.time = time;
26+
}
27+
28+
public boolean actionFor(Order order) {
29+
return this.order.getId().equals(order.getId());
30+
}
31+
32+
public static Action makePickup(Order order) {
33+
return new Action(ActionType.PICKUP, order, null);
34+
}
35+
36+
public static Action makeDropoff(Order order, LocalDateTime deliveryTime) {
37+
return new Action(ActionType.DROPOFF, order, deliveryTime);
38+
}
39+
40+
41+
public ActionType getType() {
42+
return type;
43+
}
44+
45+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package net.chrisrichardson.ftgo.domain;
2+
3+
public enum ActionType { PICKUP, DROPOFF
4+
}

0 commit comments

Comments
 (0)