Selaa lähdekoodia

Package "remote" renamed "remoting" for consistency.

The implementation of our routing service - which consists mainly of model translation and delegation - is moved to the application part, from the domain service layer. The routing service interface is part of our domain but the implementation is not, similar to repositories and their implementations.
peter_backlund 18 vuotta sitten
vanhempi
commit
56f8843ae3
19 muutettua tiedostoa jossa 111 lisäystä ja 33 poistoa
  1. 4
    4
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/BookingServiceFacade.java
  2. 8
    8
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/BookingServiceFacadeImpl.java
  3. 1
    1
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/CargoRoutingDTO.java
  4. 1
    1
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/CargoTrackingDTO.java
  5. 1
    1
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/HandlingEventDTO.java
  6. 1
    1
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/ItineraryCandidateDTO.java
  7. 1
    1
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/LegDTO.java
  8. 1
    1
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/LocationDTO.java
  9. 2
    2
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/CargoRoutingDTOAssembler.java
  10. 2
    2
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/CargoTrackingDTOAssembler.java
  11. 4
    4
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/ItineraryCandidateDTOAssembler.java
  12. 2
    2
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/LocationDTOAssembler.java
  13. 0
    0
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/package.html
  14. 0
    0
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/package.html
  15. 0
    0
      dddsample/src/main/java/se/citerus/dddsample/application/remoting/package.html
  16. 77
    0
      dddsample/src/main/java/se/citerus/dddsample/application/routing/ExternalRoutingService.java
  17. 2
    2
      dddsample/src/main/resources/context-remote.xml
  18. 1
    1
      dddsample/src/main/resources/context-service.xml
  19. 3
    2
      dddsample/src/test/java/se/citerus/dddsample/domain/service/RoutingServiceTest.java

dddsample/src/main/java/se/citerus/dddsample/application/remote/BookingServiceFacade.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/BookingServiceFacade.java Näytä tiedosto

@@ -1,8 +1,8 @@
1
-package se.citerus.dddsample.application.remote;
1
+package se.citerus.dddsample.application.remoting;
2 2
 
3
-import se.citerus.dddsample.application.remote.dto.CargoRoutingDTO;
4
-import se.citerus.dddsample.application.remote.dto.ItineraryCandidateDTO;
5
-import se.citerus.dddsample.application.remote.dto.LocationDTO;
3
+import se.citerus.dddsample.application.remoting.dto.CargoRoutingDTO;
4
+import se.citerus.dddsample.application.remoting.dto.ItineraryCandidateDTO;
5
+import se.citerus.dddsample.application.remoting.dto.LocationDTO;
6 6
 
7 7
 import java.rmi.Remote;
8 8
 import java.rmi.RemoteException;

dddsample/src/main/java/se/citerus/dddsample/application/remote/BookingServiceFacadeImpl.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/BookingServiceFacadeImpl.java Näytä tiedosto

@@ -1,11 +1,11 @@
1
-package se.citerus.dddsample.application.remote;
2
-
3
-import se.citerus.dddsample.application.remote.dto.CargoRoutingDTO;
4
-import se.citerus.dddsample.application.remote.dto.ItineraryCandidateDTO;
5
-import se.citerus.dddsample.application.remote.dto.LocationDTO;
6
-import se.citerus.dddsample.application.remote.dto.assembler.CargoRoutingDTOAssembler;
7
-import se.citerus.dddsample.application.remote.dto.assembler.ItineraryCandidateDTOAssembler;
8
-import se.citerus.dddsample.application.remote.dto.assembler.LocationDTOAssembler;
1
+package se.citerus.dddsample.application.remoting;
2
+
3
+import se.citerus.dddsample.application.remoting.dto.CargoRoutingDTO;
4
+import se.citerus.dddsample.application.remoting.dto.ItineraryCandidateDTO;
5
+import se.citerus.dddsample.application.remoting.dto.LocationDTO;
6
+import se.citerus.dddsample.application.remoting.dto.assembler.CargoRoutingDTOAssembler;
7
+import se.citerus.dddsample.application.remoting.dto.assembler.ItineraryCandidateDTOAssembler;
8
+import se.citerus.dddsample.application.remoting.dto.assembler.LocationDTOAssembler;
9 9
 import se.citerus.dddsample.domain.model.cargo.Cargo;
10 10
 import se.citerus.dddsample.domain.model.cargo.CargoRepository;
11 11
 import se.citerus.dddsample.domain.model.cargo.Itinerary;

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/CargoRoutingDTO.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/CargoRoutingDTO.java Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package se.citerus.dddsample.application.remote.dto;
1
+package se.citerus.dddsample.application.remoting.dto;
2 2
 
3 3
 import java.io.Serializable;
4 4
 import java.util.ArrayList;

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/CargoTrackingDTO.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/CargoTrackingDTO.java Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package se.citerus.dddsample.application.remote.dto;
1
+package se.citerus.dddsample.application.remoting.dto;
2 2
 
3 3
 import se.citerus.dddsample.domain.model.cargo.StatusCode;
4 4
 

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/HandlingEventDTO.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/HandlingEventDTO.java Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package se.citerus.dddsample.application.remote.dto;
1
+package se.citerus.dddsample.application.remoting.dto;
2 2
 
3 3
 import java.io.Serializable;
4 4
 import java.util.Date;

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/ItineraryCandidateDTO.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/ItineraryCandidateDTO.java Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package se.citerus.dddsample.application.remote.dto;
1
+package se.citerus.dddsample.application.remoting.dto;
2 2
 
3 3
 import java.io.Serializable;
4 4
 import java.util.Collections;

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/LegDTO.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/LegDTO.java Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package se.citerus.dddsample.application.remote.dto;
1
+package se.citerus.dddsample.application.remoting.dto;
2 2
 
3 3
 import java.io.Serializable;
4 4
 

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/LocationDTO.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/LocationDTO.java Näytä tiedosto

@@ -1,4 +1,4 @@
1
-package se.citerus.dddsample.application.remote.dto;
1
+package se.citerus.dddsample.application.remoting.dto;
2 2
 
3 3
 import java.io.Serializable;
4 4
 

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/assembler/CargoRoutingDTOAssembler.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/CargoRoutingDTOAssembler.java Näytä tiedosto

@@ -1,6 +1,6 @@
1
-package se.citerus.dddsample.application.remote.dto.assembler;
1
+package se.citerus.dddsample.application.remoting.dto.assembler;
2 2
 
3
-import se.citerus.dddsample.application.remote.dto.CargoRoutingDTO;
3
+import se.citerus.dddsample.application.remoting.dto.CargoRoutingDTO;
4 4
 import se.citerus.dddsample.domain.model.cargo.Cargo;
5 5
 import se.citerus.dddsample.domain.model.cargo.Leg;
6 6
 

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/assembler/CargoTrackingDTOAssembler.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/CargoTrackingDTOAssembler.java Näytä tiedosto

@@ -1,6 +1,6 @@
1
-package se.citerus.dddsample.application.remote.dto.assembler;
1
+package se.citerus.dddsample.application.remoting.dto.assembler;
2 2
 
3
-import se.citerus.dddsample.application.remote.dto.CargoTrackingDTO;
3
+import se.citerus.dddsample.application.remoting.dto.CargoTrackingDTO;
4 4
 import se.citerus.dddsample.domain.model.cargo.Cargo;
5 5
 import se.citerus.dddsample.domain.model.cargo.DeliveryHistory;
6 6
 import se.citerus.dddsample.domain.model.carrier.CarrierMovement;

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/assembler/ItineraryCandidateDTOAssembler.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/ItineraryCandidateDTOAssembler.java Näytä tiedosto

@@ -1,7 +1,7 @@
1
-package se.citerus.dddsample.application.remote.dto.assembler;
1
+package se.citerus.dddsample.application.remoting.dto.assembler;
2 2
 
3
-import se.citerus.dddsample.application.remote.dto.ItineraryCandidateDTO;
4
-import se.citerus.dddsample.application.remote.dto.LegDTO;
3
+import se.citerus.dddsample.application.remoting.dto.ItineraryCandidateDTO;
4
+import se.citerus.dddsample.application.remoting.dto.LegDTO;
5 5
 import se.citerus.dddsample.domain.model.cargo.Itinerary;
6 6
 import se.citerus.dddsample.domain.model.cargo.Leg;
7 7
 import se.citerus.dddsample.domain.model.carrier.CarrierMovement;
@@ -20,7 +20,7 @@ import java.util.List;
20 20
 public class ItineraryCandidateDTOAssembler {
21 21
   
22 22
   public ItineraryCandidateDTO toDTO(final Itinerary itinerary) {
23
-    final List<LegDTO> legDTOs = new ArrayList<se.citerus.dddsample.application.remote.dto.LegDTO>(itinerary.legs().size());
23
+    final List<LegDTO> legDTOs = new ArrayList<se.citerus.dddsample.application.remoting.dto.LegDTO>(itinerary.legs().size());
24 24
     for (Leg leg : itinerary.legs()) {
25 25
       legDTOs.add(toLegDTO(leg));
26 26
     }

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/assembler/LocationDTOAssembler.java → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/LocationDTOAssembler.java Näytä tiedosto

@@ -1,6 +1,6 @@
1
-package se.citerus.dddsample.application.remote.dto.assembler;
1
+package se.citerus.dddsample.application.remoting.dto.assembler;
2 2
 
3
-import se.citerus.dddsample.application.remote.dto.LocationDTO;
3
+import se.citerus.dddsample.application.remoting.dto.LocationDTO;
4 4
 import se.citerus.dddsample.domain.model.location.Location;
5 5
 
6 6
 import java.util.ArrayList;

dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/assembler/package.html → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/assembler/package.html Näytä tiedosto


dddsample/src/main/java/se/citerus/dddsample/application/remote/dto/package.html → dddsample/src/main/java/se/citerus/dddsample/application/remoting/dto/package.html Näytä tiedosto


dddsample/src/main/java/se/citerus/dddsample/application/remote/package.html → dddsample/src/main/java/se/citerus/dddsample/application/remoting/package.html Näytä tiedosto


+ 77
- 0
dddsample/src/main/java/se/citerus/dddsample/application/routing/ExternalRoutingService.java Näytä tiedosto

@@ -0,0 +1,77 @@
1
+package se.citerus.dddsample.application.routing;
2
+
3
+import org.springframework.transaction.annotation.Transactional;
4
+import se.citerus.dddsample.domain.model.cargo.Itinerary;
5
+import se.citerus.dddsample.domain.model.cargo.Leg;
6
+import se.citerus.dddsample.domain.model.cargo.RouteSpecification;
7
+import se.citerus.dddsample.domain.model.carrier.CarrierMovementId;
8
+import se.citerus.dddsample.domain.model.carrier.CarrierMovementRepository;
9
+import se.citerus.dddsample.domain.model.location.Location;
10
+import se.citerus.dddsample.domain.model.location.LocationRepository;
11
+import se.citerus.dddsample.domain.model.location.UnLocode;
12
+import se.citerus.dddsample.domain.service.RoutingService;
13
+import se.citerus.routingteam.GraphTraversalService;
14
+import se.citerus.routingteam.TransitEdge;
15
+import se.citerus.routingteam.TransitPath;
16
+
17
+import java.util.ArrayList;
18
+import java.util.List;
19
+
20
+/**
21
+ * Our end of the routing service.
22
+ *
23
+ */
24
+public class ExternalRoutingService implements RoutingService {
25
+
26
+  private GraphTraversalService graphTraversalService;
27
+  private LocationRepository locationRepository;
28
+  private CarrierMovementRepository carrierMovementRepository;
29
+
30
+  @Transactional(readOnly = true)
31
+  public List<Itinerary> fetchRoutesForSpecification(RouteSpecification routeSpecification) {
32
+    final Location origin = routeSpecification.origin();
33
+    final Location destination = routeSpecification.destination();
34
+
35
+    final List<TransitPath> transitPaths = graphTraversalService.performHeavyCalculations(
36
+      origin.unLocode().idString(),
37
+      destination.unLocode().idString()
38
+    );
39
+    
40
+    final List<Itinerary> itineraries = new ArrayList<Itinerary>(transitPaths.size());
41
+
42
+    for (TransitPath transitPath : transitPaths) {
43
+      final Itinerary itinerary = toItinerary(transitPath);
44
+      itineraries.add(itinerary);
45
+    }
46
+
47
+    return itineraries;
48
+  }
49
+
50
+  private Itinerary toItinerary(TransitPath transitPath) {
51
+    List<Leg> legs = new ArrayList(transitPath.getTransitEdges().size());
52
+    for (TransitEdge edge : transitPath.getTransitEdges()) {
53
+      legs.add(toLeg(edge));
54
+    }
55
+    return new Itinerary(legs);
56
+  }
57
+
58
+  private Leg toLeg(TransitEdge edge) {
59
+    return new Leg(
60
+      carrierMovementRepository.find(new CarrierMovementId(edge.getCarrierMovementId())),
61
+      locationRepository.find(new UnLocode(edge.getFromUnLocode())),
62
+      locationRepository.find(new UnLocode(edge.getToUnLocode()))
63
+    );
64
+  }
65
+
66
+  public void setGraphTraversalService(GraphTraversalService graphTraversalService) {
67
+    this.graphTraversalService = graphTraversalService;
68
+  }
69
+
70
+  public void setLocationRepository(LocationRepository locationRepository) {
71
+    this.locationRepository = locationRepository;
72
+  }
73
+
74
+  public void setCarrierMovementRepository(CarrierMovementRepository carrierMovementRepository) {
75
+    this.carrierMovementRepository = carrierMovementRepository;
76
+  }
77
+}

+ 2
- 2
dddsample/src/main/resources/context-remote.xml Näytä tiedosto

@@ -46,7 +46,7 @@
46 46
       </list>
47 47
     </property>
48 48
     <property name="target">
49
-      <bean class="se.citerus.dddsample.application.remote.BookingServiceFacadeImpl">
49
+      <bean class="se.citerus.dddsample.application.remoting.BookingServiceFacadeImpl">
50 50
         <property name="bookingService" ref="bookingService"/>
51 51
         <property name="cargoRepository" ref="cargoRepository"/>
52 52
         <property name="locationRepository" ref="locationRepository"/>
@@ -73,7 +73,7 @@
73 73
 
74 74
   <!-- RMI exposure -->
75 75
   <bean id="rmiBookingServiceFacade" class="org.springframework.remoting.rmi.RmiServiceExporter">
76
-    <property name="serviceInterface" value="se.citerus.dddsample.application.remote.BookingServiceFacade"/>
76
+    <property name="serviceInterface" value="se.citerus.dddsample.application.remoting.BookingServiceFacade"/>
77 77
     <property name="service" ref="bookingServiceFacade"/>
78 78
     <property name="serviceName" value="BookingService"/>
79 79
   </bean>

+ 1
- 1
dddsample/src/main/resources/context-service.xml Näytä tiedosto

@@ -27,7 +27,7 @@
27 27
     <property name="eventService" ref="eventService"/>
28 28
   </bean>
29 29
 
30
-  <bean id="routingService" class="se.citerus.dddsample.domain.service.RoutingServiceImpl">
30
+  <bean id="routingService" class="se.citerus.dddsample.application.routing.ExternalRoutingService">
31 31
     <property name="locationRepository" ref="locationRepository"/>
32 32
     <property name="carrierMovementRepository" ref="carrierMovementRepository"/>
33 33
     <property name="graphTraversalService" ref="graphTraversalService"/>

+ 3
- 2
dddsample/src/test/java/se/citerus/dddsample/domain/service/RoutingServiceTest.java Näytä tiedosto

@@ -3,6 +3,7 @@ package se.citerus.dddsample.domain.service;
3 3
 import junit.framework.TestCase;
4 4
 import static org.easymock.EasyMock.*;
5 5
 import se.citerus.dddsample.application.persistence.LocationRepositoryInMem;
6
+import se.citerus.dddsample.application.routing.ExternalRoutingService;
6 7
 import se.citerus.dddsample.domain.model.cargo.*;
7 8
 import se.citerus.dddsample.domain.model.carrier.CarrierMovement;
8 9
 import se.citerus.dddsample.domain.model.carrier.CarrierMovementId;
@@ -20,11 +21,11 @@ import java.util.List;
20 21
 
21 22
 public class RoutingServiceTest extends TestCase {
22 23
 
23
-  private RoutingServiceImpl routingService;
24
+  private ExternalRoutingService routingService;
24 25
   private CarrierMovementRepository carrierMovementRepository;
25 26
 
26 27
   protected void setUp() throws Exception {
27
-    routingService = new RoutingServiceImpl();
28
+    routingService = new ExternalRoutingService();
28 29
     LocationRepository locationRepository = new LocationRepositoryInMem();
29 30
     routingService.setLocationRepository(locationRepository);
30 31