Browse Source

Rename TrackingIdGenerator TrackingIdFactory, moved into cargo aggregate package.

peter_backlund 17 years ago
parent
commit
03f92c183a

+ 4
- 11
dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/domain/model/cargo/CargoFactory.java View File

@@ -1,30 +1,23 @@
1
-/**
2
- * Purpose
3
- * @author peter
4
- * @created 2009-jun-14
5
- * $Id$
6
- */
7 1
 package se.citerus.dddsample.tracking.core.domain.model.cargo;
8 2
 
9 3
 import se.citerus.dddsample.tracking.core.domain.model.location.Location;
10 4
 import se.citerus.dddsample.tracking.core.domain.model.location.LocationRepository;
11 5
 import se.citerus.dddsample.tracking.core.domain.model.location.UnLocode;
12
-import se.citerus.dddsample.tracking.core.domain.service.TrackingIdGenerator;
13 6
 
14 7
 import java.util.Date;
15 8
 
16 9
 public class CargoFactory {
17 10
 
18 11
   private final LocationRepository locationRepository;
19
-  private final TrackingIdGenerator trackingIdGenerator;
12
+  private final TrackingIdFactory trackingIdFactory;
20 13
 
21
-  public CargoFactory(LocationRepository locationRepository, TrackingIdGenerator trackingIdGenerator) {
14
+  public CargoFactory(LocationRepository locationRepository, TrackingIdFactory trackingIdFactory) {
22 15
     this.locationRepository = locationRepository;
23
-    this.trackingIdGenerator = trackingIdGenerator;
16
+    this.trackingIdFactory = trackingIdFactory;
24 17
   }
25 18
 
26 19
   public Cargo newCargo(UnLocode originUnLocode, UnLocode destinationUnLocode, Date arrivalDeadline) {
27
-    final TrackingId trackingId = trackingIdGenerator.nextTrackingId();
20
+    final TrackingId trackingId = trackingIdFactory.nextTrackingId();
28 21
     final Location origin = locationRepository.find(originUnLocode);
29 22
     final Location destination = locationRepository.find(destinationUnLocode);
30 23
     final RouteSpecification routeSpecification = new RouteSpecification(origin, destination, arrivalDeadline);

+ 10
- 0
dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/domain/model/cargo/TrackingIdFactory.java View File

@@ -0,0 +1,10 @@
1
+package se.citerus.dddsample.tracking.core.domain.model.cargo;
2
+
3
+/**
4
+ * Generates tracking ids for cargos. This is a domain service.
5
+ */
6
+public interface TrackingIdFactory {
7
+
8
+  TrackingId nextTrackingId();
9
+
10
+}

+ 0
- 12
dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/domain/service/TrackingIdGenerator.java View File

@@ -1,12 +0,0 @@
1
-package se.citerus.dddsample.tracking.core.domain.service;
2
-
3
-import se.citerus.dddsample.tracking.core.domain.model.cargo.TrackingId;
4
-
5
-/**
6
- * Generates tracking ids for cargos. This is a domain service.
7
- */
8
-public interface TrackingIdGenerator {
9
-
10
-  TrackingId nextTrackingId();
11
-
12
-}

dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/infrastructure/persistence/hibernate/DatabaseTrackingIdGenerator.java → dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/infrastructure/persistence/hibernate/DatabaseTrackingIdFactory.java View File

@@ -10,16 +10,16 @@ import org.hibernate.SessionFactory;
10 10
 import org.springframework.beans.factory.annotation.Autowired;
11 11
 import org.springframework.stereotype.Repository;
12 12
 import se.citerus.dddsample.tracking.core.domain.model.cargo.TrackingId;
13
-import se.citerus.dddsample.tracking.core.domain.service.TrackingIdGenerator;
13
+import se.citerus.dddsample.tracking.core.domain.model.cargo.TrackingIdFactory;
14 14
 
15 15
 @Repository
16
-public class DatabaseTrackingIdGenerator implements TrackingIdGenerator {
16
+public class DatabaseTrackingIdFactory implements TrackingIdFactory {
17 17
 
18 18
   private final SessionFactory sessionFactory;
19 19
   private static final String SEQUENCE_NAME = "TRACKING_ID_SEQ";
20 20
 
21 21
   @Autowired
22
-  public DatabaseTrackingIdGenerator(final SessionFactory sessionFactory) {
22
+  public DatabaseTrackingIdFactory(final SessionFactory sessionFactory) {
23 23
     this.sessionFactory = sessionFactory;
24 24
   }
25 25
 

dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/infrastructure/persistence/inmemory/TrackingIdGeneratorInMem.java → dddsample/tracking/core/src/main/java/se/citerus/dddsample/tracking/core/infrastructure/persistence/inmemory/TrackingIdFactoryInMem.java View File

@@ -7,11 +7,11 @@
7 7
 package se.citerus.dddsample.tracking.core.infrastructure.persistence.inmemory;
8 8
 
9 9
 import se.citerus.dddsample.tracking.core.domain.model.cargo.TrackingId;
10
-import se.citerus.dddsample.tracking.core.domain.service.TrackingIdGenerator;
10
+import se.citerus.dddsample.tracking.core.domain.model.cargo.TrackingIdFactory;
11 11
 
12 12
 import java.util.concurrent.atomic.AtomicLong;
13 13
 
14
-public class TrackingIdGeneratorInMem implements TrackingIdGenerator {
14
+public class TrackingIdFactoryInMem implements TrackingIdFactory {
15 15
 
16 16
   private static final AtomicLong SEQ = new AtomicLong(1);
17 17
 

+ 6
- 7
dddsample/tracking/core/src/test/java/se/citerus/dddsample/tracking/core/application/booking/BookingServiceTest.java View File

@@ -8,7 +8,6 @@ import static se.citerus.dddsample.tracking.core.domain.model.location.SampleLoc
8 8
 import static se.citerus.dddsample.tracking.core.domain.model.location.SampleLocations.STOCKHOLM;
9 9
 import se.citerus.dddsample.tracking.core.domain.model.location.UnLocode;
10 10
 import se.citerus.dddsample.tracking.core.domain.service.RoutingService;
11
-import se.citerus.dddsample.tracking.core.domain.service.TrackingIdGenerator;
12 11
 
13 12
 import java.util.Date;
14 13
 
@@ -18,14 +17,14 @@ public class BookingServiceTest extends TestCase {
18 17
   CargoRepository cargoRepository;
19 18
   LocationRepository locationRepository;
20 19
   RoutingService routingService;
21
-  TrackingIdGenerator trackingIdGenerator;
20
+  TrackingIdFactory trackingIdFactory;
22 21
 
23 22
   protected void setUp() throws Exception {
24 23
     cargoRepository = createMock(CargoRepository.class);
25 24
     locationRepository = createMock(LocationRepository.class);
26 25
     routingService = createMock(RoutingService.class);
27
-    trackingIdGenerator = createMock(TrackingIdGenerator.class);
28
-    CargoFactory cargoFactory = new CargoFactory(locationRepository, trackingIdGenerator);
26
+    trackingIdFactory = createMock(TrackingIdFactory.class);
27
+    CargoFactory cargoFactory = new CargoFactory(locationRepository, trackingIdFactory);
29 28
     bookingService = new BookingServiceImpl(routingService, cargoFactory, cargoRepository, locationRepository);
30 29
   }
31 30
 
@@ -34,19 +33,19 @@ public class BookingServiceTest extends TestCase {
34 33
     UnLocode fromUnlocode = new UnLocode("USCHI");
35 34
     UnLocode toUnlocode = new UnLocode("SESTO");
36 35
 
37
-    expect(trackingIdGenerator.nextTrackingId()).andReturn(expectedTrackingId);
36
+    expect(trackingIdFactory.nextTrackingId()).andReturn(expectedTrackingId);
38 37
     expect(locationRepository.find(fromUnlocode)).andReturn(CHICAGO);
39 38
     expect(locationRepository.find(toUnlocode)).andReturn(STOCKHOLM);
40 39
 
41 40
     cargoRepository.store(isA(Cargo.class));
42 41
 
43
-    replay(cargoRepository, locationRepository, trackingIdGenerator);
42
+    replay(cargoRepository, locationRepository, trackingIdFactory);
44 43
 
45 44
     TrackingId trackingId = bookingService.bookNewCargo(fromUnlocode, toUnlocode, new Date());
46 45
     assertEquals(expectedTrackingId, trackingId);
47 46
   }
48 47
 
49 48
   protected void tearDown() throws Exception {
50
-    verify(cargoRepository, locationRepository, trackingIdGenerator);
49
+    verify(cargoRepository, locationRepository, trackingIdFactory);
51 50
   }
52 51
 }

+ 1
- 1
dddsample/tracking/core/src/test/java/se/citerus/dddsample/tracking/core/application/event/CargoUpdaterTest.java View File

@@ -37,7 +37,7 @@ public class CargoUpdaterTest {
37 37
     handlingEventRepository = new HandlingEventRepositoryInMem();
38 38
     locationRepository = new LocationRepositoryInMem();
39 39
     voyageRepository = new VoyageRepositoryInMem();
40
-    cargoFactory = new CargoFactory(locationRepository, new TrackingIdGeneratorInMem());
40
+    cargoFactory = new CargoFactory(locationRepository, new TrackingIdFactoryInMem());
41 41
     handlingEventFactory = new HandlingEventFactory(cargoRepository, voyageRepository, locationRepository);
42 42
     cargoUpdater = new CargoUpdater(systemEvents, cargoRepository, handlingEventRepository);
43 43
   }

+ 17
- 6
dddsample/tracking/core/src/test/java/se/citerus/dddsample/tracking/core/domain/model/cargo/CargoFactoryTest.java View File

@@ -8,23 +8,34 @@ package se.citerus.dddsample.tracking.core.domain.model.cargo;
8 8
 
9 9
 import static org.junit.Assert.assertEquals;
10 10
 import static org.junit.Assert.assertNotNull;
11
+import org.junit.Before;
11 12
 import org.junit.Test;
12 13
 import static se.citerus.dddsample.tracking.core.application.util.DateTestUtil.toDate;
13 14
 import static se.citerus.dddsample.tracking.core.domain.model.location.SampleLocations.HONGKONG;
14 15
 import static se.citerus.dddsample.tracking.core.domain.model.location.SampleLocations.ROTTERDAM;
15
-import se.citerus.dddsample.tracking.core.infrastructure.persistence.inmemory.TrackingIdGeneratorInMem;
16 16
 import se.citerus.dddsample.tracking.core.infrastructure.persistence.inmemory.LocationRepositoryInMem;
17 17
 
18 18
 public class CargoFactoryTest {
19 19
 
20
+  CargoFactory cargoFactory;
21
+
22
+  @Before
23
+  public void setup() {
24
+    TrackingIdFactory stubFactory = new TrackingIdFactory() {
25
+      @Override
26
+      public TrackingId nextTrackingId() {
27
+        return new TrackingId("ABC");
28
+      }
29
+    };
30
+    cargoFactory = new CargoFactory(new LocationRepositoryInMem(), stubFactory);
31
+  }
32
+
20 33
   @Test
21 34
   public void createNewCargo() {
22
-    CargoFactory cargoFactory = new CargoFactory(new LocationRepositoryInMem(), new TrackingIdGeneratorInMem());
23
-    Cargo cargo = cargoFactory.newCargo(
24
-      HONGKONG.unLocode(), ROTTERDAM.unLocode(), toDate("2009-07-01")
25
-    );
35
+    Cargo cargo = cargoFactory.newCargo(HONGKONG.unLocode(), ROTTERDAM.unLocode(), toDate("2009-07-01"));
36
+
26 37
     assertNotNull(cargo);
27
-    assertNotNull(cargo.trackingId());
38
+    assertEquals(cargo.trackingId(), new TrackingId("ABC"));
28 39
     assertEquals(cargo.routeSpecification(), new RouteSpecification(HONGKONG, ROTTERDAM, toDate("2009-07-01")));
29 40
   }
30 41
 

+ 5
- 5
dddsample/tracking/core/src/test/java/se/citerus/dddsample/tracking/core/infrastructure/TrackingIdGeneratorTest.java View File

@@ -3,18 +3,18 @@ package se.citerus.dddsample.tracking.core.infrastructure;
3 3
 import junit.framework.Assert;
4 4
 import junit.framework.TestCase;
5 5
 import se.citerus.dddsample.tracking.core.domain.model.cargo.TrackingId;
6
-import se.citerus.dddsample.tracking.core.domain.service.TrackingIdGenerator;
7
-import se.citerus.dddsample.tracking.core.infrastructure.persistence.inmemory.TrackingIdGeneratorInMem;
6
+import se.citerus.dddsample.tracking.core.domain.model.cargo.TrackingIdFactory;
7
+import se.citerus.dddsample.tracking.core.infrastructure.persistence.inmemory.TrackingIdFactoryInMem;
8 8
 
9 9
 public class TrackingIdGeneratorTest extends TestCase {
10 10
 
11
-  TrackingIdGenerator trackingIdGenerator = new TrackingIdGeneratorInMem();
11
+  TrackingIdFactory trackingIdFactory = new TrackingIdFactoryInMem();
12 12
 
13 13
   public void testNextTrackingId() {
14
-    TrackingId trackingId = trackingIdGenerator.nextTrackingId();
14
+    TrackingId trackingId = trackingIdFactory.nextTrackingId();
15 15
     Assert.assertNotNull(trackingId);
16 16
 
17
-    TrackingId trackingId2 = trackingIdGenerator.nextTrackingId();
17
+    TrackingId trackingId2 = trackingIdFactory.nextTrackingId();
18 18
     Assert.assertNotNull(trackingId2);
19 19
     Assert.assertFalse(trackingId.equals(trackingId2));
20 20
   }

+ 1
- 1
dddsample/tracking/core/src/test/java/se/citerus/dddsample/tracking/core/scenario/CargoLifecycleScenarioTest.java View File

@@ -41,7 +41,7 @@ public class CargoLifecycleScenarioTest {
41 41
   VoyageRepository voyageRepository = new VoyageRepositoryInMem();
42 42
 
43 43
   HandlingEventFactory handlingEventFactory = new HandlingEventFactory(cargoRepository, voyageRepository, locationRepository);
44
-  CargoFactory cargoFactory = new CargoFactory(locationRepository, new TrackingIdGeneratorInMem());
44
+  CargoFactory cargoFactory = new CargoFactory(locationRepository, new TrackingIdFactoryInMem());
45 45
 
46 46
   /**
47 47
    * This is a domain service interface, whose implementation

+ 2
- 2
dddsample/tracking/core/src/test/java/se/citerus/dddsample/tracking/core/scenario/VoyageRescheduledScenarioTest.java View File

@@ -22,7 +22,7 @@ import static se.citerus.dddsample.tracking.core.domain.model.voyage.SampleVoyag
22 22
 import se.citerus.dddsample.tracking.core.domain.model.voyage.Voyage;
23 23
 import se.citerus.dddsample.tracking.core.domain.model.voyage.VoyageNumber;
24 24
 import se.citerus.dddsample.tracking.core.infrastructure.persistence.inmemory.LocationRepositoryInMem;
25
-import se.citerus.dddsample.tracking.core.infrastructure.persistence.inmemory.TrackingIdGeneratorInMem;
25
+import se.citerus.dddsample.tracking.core.infrastructure.persistence.inmemory.TrackingIdFactoryInMem;
26 26
 
27 27
 import java.util.Date;
28 28
 
@@ -39,7 +39,7 @@ public class VoyageRescheduledScenarioTest {
39 39
     voyage1 = new Voyage(new VoyageNumber("V1"), HONGKONG_TO_NEW_YORK.schedule());
40 40
     voyage2 = new Voyage(new VoyageNumber("V2"), NEW_YORK_TO_DALLAS.schedule());
41 41
     voyage3 = new Voyage(new VoyageNumber("V3"), DALLAS_TO_HELSINKI.schedule());
42
-    CargoFactory cargoFactory = new CargoFactory(new LocationRepositoryInMem(), new TrackingIdGeneratorInMem());
42
+    CargoFactory cargoFactory = new CargoFactory(new LocationRepositoryInMem(), new TrackingIdFactoryInMem());
43 43
     cargo = cargoFactory.newCargo(HANGZOU.unLocode(), STOCKHOLM.unLocode(), toDate("2008-12-23"));
44 44
     Itinerary itinerary = new Itinerary(
45 45
       Leg.deriveLeg(voyage1, HANGZOU, NEWYORK),