Initial version
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..3814708
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,35 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<groupId>org.craftedsw</groupId>
+	<artifactId>socrates2012</artifactId>
+	<version>0.0.1-SNAPSHOT</version>
+	<name>socrates2012</name>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.hamcrest</groupId>
+			<artifactId>hamcrest-core</artifactId>
+			<version>1.3.RC2</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.hamcrest</groupId>
+			<artifactId>hamcrest-library</artifactId>
+			<version>1.3.RC2</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.8.2</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-all</artifactId>
+			<version>1.9.0-rc1</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+</project>
\ No newline at end of file
diff --git a/src/main/java/org/craftedsw/TripService_Original.java b/src/main/java/org/craftedsw/TripService_Original.java
new file mode 100644
index 0000000..406fa39
--- /dev/null
+++ b/src/main/java/org/craftedsw/TripService_Original.java
@@ -0,0 +1,36 @@
+package org.craftedsw;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.craftedsw.exceptions.UserNotLoggedInException;
+import org.craftedsw.trip.Trip;
+import org.craftedsw.trip.TripDAO;
+import org.craftedsw.user.User;
+import org.craftedsw.user.UserSession;
+
+
+
+public class TripService_Original {
+
+	public List<Trip> getTripsByUser(User user) throws UserNotLoggedInException {
+		List<Trip> tripList = new ArrayList<Trip>();
+		User loggedUser = UserSession.getInstance().getLoggedUser();
+		boolean isFriend = false;
+		if (loggedUser != null) {
+			for (User friend : user.getFriends()) {
+				if (friend.equals(loggedUser)) {
+					isFriend = true;
+					break;
+				}
+			}
+			if (isFriend) {
+				tripList = TripDAO.findTripsByUser(user);
+			}
+			return tripList;
+		} else {
+			throw new UserNotLoggedInException();
+		}
+	}
+	
+}
diff --git a/src/main/java/org/craftedsw/exceptions/DependendClassCallDuringUnitTestException.java b/src/main/java/org/craftedsw/exceptions/DependendClassCallDuringUnitTestException.java
new file mode 100644
index 0000000..9d2f03b
--- /dev/null
+++ b/src/main/java/org/craftedsw/exceptions/DependendClassCallDuringUnitTestException.java
@@ -0,0 +1,25 @@
+package org.craftedsw.exceptions;
+
+public class DependendClassCallDuringUnitTestException extends RuntimeException {
+
+	private static final long serialVersionUID = -4584041339906109902L;
+
+	public DependendClassCallDuringUnitTestException() {
+		super();
+	}
+
+	public DependendClassCallDuringUnitTestException(String message,
+			Throwable cause) {
+		super(message, cause);
+	}
+
+	public DependendClassCallDuringUnitTestException(String message) {
+		super(message);
+	}
+
+	public DependendClassCallDuringUnitTestException(Throwable cause) {
+		super(cause);
+	}
+
+	
+}
diff --git a/src/main/java/org/craftedsw/exceptions/UserNotLoggedInException.java b/src/main/java/org/craftedsw/exceptions/UserNotLoggedInException.java
new file mode 100644
index 0000000..a163064
--- /dev/null
+++ b/src/main/java/org/craftedsw/exceptions/UserNotLoggedInException.java
@@ -0,0 +1,7 @@
+package org.craftedsw.exceptions;
+
+public class UserNotLoggedInException extends Exception {
+
+	private static final long serialVersionUID = 8959479918185637340L;
+
+}
diff --git a/src/main/java/org/craftedsw/trip/Trip.java b/src/main/java/org/craftedsw/trip/Trip.java
new file mode 100644
index 0000000..b689af4
--- /dev/null
+++ b/src/main/java/org/craftedsw/trip/Trip.java
@@ -0,0 +1,5 @@
+package org.craftedsw.trip;
+
+public class Trip {
+
+}
diff --git a/src/main/java/org/craftedsw/trip/TripDAO.java b/src/main/java/org/craftedsw/trip/TripDAO.java
new file mode 100644
index 0000000..7992033
--- /dev/null
+++ b/src/main/java/org/craftedsw/trip/TripDAO.java
@@ -0,0 +1,21 @@
+package org.craftedsw.trip;
+
+import java.util.List;
+
+import org.craftedsw.exceptions.DependendClassCallDuringUnitTestException;
+import org.craftedsw.user.User;
+
+
+
+public class TripDAO {
+
+	public static List<Trip> findTripsByUser(User user) {
+		throw new DependendClassCallDuringUnitTestException(
+				"TripDAO should not be invoked on an unit test.");
+	}
+	
+	public List<Trip> findTripsBy(User user) {
+		return TripDAO.findTripsByUser(user);
+	}
+	
+}
\ No newline at end of file
diff --git a/src/main/java/org/craftedsw/trip/TripService.java b/src/main/java/org/craftedsw/trip/TripService.java
new file mode 100644
index 0000000..664ae84
--- /dev/null
+++ b/src/main/java/org/craftedsw/trip/TripService.java
@@ -0,0 +1,32 @@
+package org.craftedsw.trip;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.craftedsw.exceptions.UserNotLoggedInException;

+import org.craftedsw.user.User;

+import org.craftedsw.user.UserSession;

+

+

+public class TripService {

+

+	public List<Trip> getTripsByUser(User user) throws UserNotLoggedInException {

+		List<Trip> tripList = new ArrayList<Trip>();

+		User loggedUser = UserSession.getInstance().getLoggedUser();

+		boolean isFriend = false;

+		if (loggedUser != null) {

+			for (User friend : user.getFriends()) {

+				if (friend.equals(loggedUser)) {

+					isFriend = true;

+					break;

+				}

+			}

+			if (isFriend) {

+				tripList = TripDAO.findTripsByUser(user);

+			}

+			return tripList;

+		} else {

+			throw new UserNotLoggedInException();

+		}

+	}

+}

diff --git a/src/main/java/org/craftedsw/user/User.java b/src/main/java/org/craftedsw/user/User.java
new file mode 100644
index 0000000..f1749c3
--- /dev/null
+++ b/src/main/java/org/craftedsw/user/User.java
@@ -0,0 +1,30 @@
+package org.craftedsw.user;

+

+import java.util.ArrayList;

+import java.util.List;

+

+import org.craftedsw.trip.Trip;

+

+

+public class User {

+

+	private List<Trip> trips = new ArrayList<Trip>();

+	private List<User> friends = new ArrayList<User>();

+	

+	public List<User> getFriends() {

+		return friends;

+	}

+	

+	public void addFriend(User user) {

+		friends.add(user);

+	}

+

+	public void addTrip(Trip trip) {

+		trips.add(trip);

+	}

+	

+	public List<Trip> trips() {

+		return trips;

+	}

+

+}

diff --git a/src/main/java/org/craftedsw/user/UserSession.java b/src/main/java/org/craftedsw/user/UserSession.java
new file mode 100644
index 0000000..4a229d5
--- /dev/null
+++ b/src/main/java/org/craftedsw/user/UserSession.java
@@ -0,0 +1,26 @@
+package org.craftedsw.user;
+
+import org.craftedsw.exceptions.DependendClassCallDuringUnitTestException;
+
+public class UserSession {
+
+	private static final UserSession userSession = new UserSession();
+	
+	private UserSession() {
+	}
+	
+	public static UserSession getInstance() {
+		return userSession;
+	}
+
+	public boolean isUserLoggedIn(User user) {
+		throw new DependendClassCallDuringUnitTestException(
+				"UserSession.isUserLoggedIn() should not be called in an unit test");
+	}
+
+	public User getLoggedUser() {
+		throw new DependendClassCallDuringUnitTestException(
+				"UserSession.getLoggedUser() should not be called in an unit test");
+	}
+
+}
diff --git a/src/test/java/org/craftedsw/trip/TripServiceTest.java b/src/test/java/org/craftedsw/trip/TripServiceTest.java
new file mode 100644
index 0000000..e2d83f1
--- /dev/null
+++ b/src/test/java/org/craftedsw/trip/TripServiceTest.java
@@ -0,0 +1,6 @@
+package org.craftedsw.trip;
+
+public class TripServiceTest {
+	
+	
+}