From 3fee659009e78d3482a9e4186e82710dd9f2ea15 Mon Sep 17 00:00:00 2001 From: Amine Date: Thu, 14 Apr 2016 01:59:27 +0200 Subject: [PATCH 1/2] A proposition for an hexagonal architecture implementation with a managerEvent service and MangoDB persistance --- Events/build.gradle | 6 ++- .../swcraftlyon/meetup/domain/IPlanner.java | 9 ++++ .../meetup/{ => domain/entities}/Event.java | 4 +- .../meetup/domain/services/EventManager.java | 21 ++++++++++ .../meetup/domain/services/IEventManager.java | 9 ++++ .../meetup/infra/ApplicationConfig.java | 32 +++++++++++++++ .../github/swcraftlyon/meetup/infra/Main.java | 26 ++++++++++++ .../infra/adapters/FacebookAdapter.java | 5 +++ .../repositories/PlannerRepository.java | 26 ++++++++++++ .../meetup/infra/dao/IEventDAO.java | 9 ++++ .../meetup/infra/dao/MangoEventDao.java | 41 +++++++++++++++++++ .../meetup/domain/EventManagerTest.java | 22 ++++++++++ .../{ => domain/entities}/EventTest.java | 2 +- .../meetup/infra/FacebookAdapterTest.java | 7 ++++ .../meetup/infra/dao/MangoEventDaoTest.java | 35 ++++++++++++++++ .../repositories/PlannerRepositoryTest.java | 18 ++++++++ 16 files changed, 269 insertions(+), 3 deletions(-) create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/domain/IPlanner.java rename Events/src/main/java/com/github/swcraftlyon/meetup/{ => domain/entities}/Event.java (76%) create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/EventManager.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/IEventManager.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/ApplicationConfig.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/Main.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/FacebookAdapter.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/repositories/PlannerRepository.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/IEventDAO.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDao.java create mode 100644 Events/src/test/java/com/github/swcraftlyon/meetup/domain/EventManagerTest.java rename Events/src/test/java/com/github/swcraftlyon/meetup/{ => domain/entities}/EventTest.java (86%) create mode 100644 Events/src/test/java/com/github/swcraftlyon/meetup/infra/FacebookAdapterTest.java create mode 100644 Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDaoTest.java create mode 100644 Events/src/test/java/com/github/swcraftlyon/meetup/infra/repositories/PlannerRepositoryTest.java diff --git a/Events/build.gradle b/Events/build.gradle index 100fa42..bf126c4 100644 --- a/Events/build.gradle +++ b/Events/build.gradle @@ -3,7 +3,6 @@ version '0.1-SNAPSHOT' apply plugin: 'java' -sourceCompatibility = 1.8 repositories { mavenCentral() @@ -12,4 +11,9 @@ repositories { dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' testCompile group: 'org.assertj', name: 'assertj-core', version: '3.3.0' + testCompile 'org.mockito:mockito-core:1.10.19' + + compile 'org.mongodb:mongo-java-driver:3.2.0' + + } diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/domain/IPlanner.java b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/IPlanner.java new file mode 100644 index 0000000..8cc1fac --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/IPlanner.java @@ -0,0 +1,9 @@ +package com.github.swcraftlyon.meetup.domain; + +import com.github.swcraftlyon.meetup.domain.entities.Event; + + +public interface IPlanner { + + void record(Event event); +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/Event.java b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/entities/Event.java similarity index 76% rename from Events/src/main/java/com/github/swcraftlyon/meetup/Event.java rename to Events/src/main/java/com/github/swcraftlyon/meetup/domain/entities/Event.java index 7895b18..178a631 100644 --- a/Events/src/main/java/com/github/swcraftlyon/meetup/Event.java +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/entities/Event.java @@ -1,6 +1,8 @@ -package com.github.swcraftlyon.meetup; +package com.github.swcraftlyon.meetup.domain.entities; + public class Event { + private final String title; public Event(String title) { diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/EventManager.java b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/EventManager.java new file mode 100644 index 0000000..bc849ea --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/EventManager.java @@ -0,0 +1,21 @@ +package com.github.swcraftlyon.meetup.domain.services; + +import com.github.swcraftlyon.meetup.domain.IPlanner; +import com.github.swcraftlyon.meetup.domain.entities.Event; + + +public class EventManager implements IEventManager { + + private final IPlanner planner; + + public EventManager(IPlanner planner) { + this.planner = planner; + } + + @Override + public Event initialiseAnEvent(String eventTitle) { + Event event = new Event(eventTitle); + planner.record(event); + return event; + } +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/IEventManager.java b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/IEventManager.java new file mode 100644 index 0000000..134ff56 --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/IEventManager.java @@ -0,0 +1,9 @@ +package com.github.swcraftlyon.meetup.domain.services; + +import com.github.swcraftlyon.meetup.domain.entities.Event; + + +public interface IEventManager { + + Event initialiseAnEvent(String eventTitle); +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/ApplicationConfig.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/ApplicationConfig.java new file mode 100644 index 0000000..624026b --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/ApplicationConfig.java @@ -0,0 +1,32 @@ +package com.github.swcraftlyon.meetup.infra; + + +public class ApplicationConfig { + + public static void getStartupMessage(){ + System.out.println("MMMMMMMM MMMMMMMM tttt !!! "); + System.out.println("M:::::::M M:::::::M ttt:::t !!:!!"); + System.out.println("M::::::::M M::::::::M t:::::t !:::!"); + System.out.println("M:::::::::M M:::::::::M t:::::t !:::!"); + System.out.println("M::::::::::M M::::::::::M eeeeeeeeeeee eeeeeeeeeeee ttttttt:::::ttttttt uuuuuu uuuuuu ppppp ppppppppp !:::!"); + System.out.println("M:::::::::::M M:::::::::::M ee::::::::::::ee ee::::::::::::ee t:::::::::::::::::t u::::u u::::u p::::ppp:::::::::p !:::!"); + System.out.println("M:::::::M::::M M::::M:::::::M e::::::eeeee:::::ee e::::::eeeee:::::eet:::::::::::::::::t u::::u u::::u p:::::::::::::::::p !:::!"); + System.out.println("M::::::M M::::M M::::M M::::::Me::::::e e:::::ee::::::e e:::::etttttt:::::::tttttt u::::u u::::u pp::::::ppppp::::::p !:::!"); + System.out.println("M::::::M M::::M::::M M::::::Me:::::::eeeee::::::ee:::::::eeeee::::::e t:::::t u::::u u::::u p:::::p p:::::p !:::!"); + System.out.println("M::::::M M:::::::M M::::::Me:::::::::::::::::e e:::::::::::::::::e t:::::t u::::u u::::u p:::::p p:::::p !:::!"); + System.out.println("M::::::M M:::::M M::::::Me::::::eeeeeeeeeee e::::::eeeeeeeeeee t:::::t u::::u u::::u p:::::p p:::::p !!:!!"); + System.out.println("M::::::M MMMMM M::::::Me:::::::e e:::::::e t:::::t ttttttu:::::uuuu:::::u p:::::p p::::::p !!! "); + System.out.println("M::::::M M::::::Me::::::::e e::::::::e t::::::tttt:::::tu:::::::::::::::uup:::::ppppp:::::::p "); + System.out.println("M::::::M M::::::M e::::::::eeeeeeee e::::::::eeeeeeee tt::::::::::::::t u:::::::::::::::up::::::::::::::::p !!! "); + System.out.println("M::::::M M::::::M ee:::::::::::::e ee:::::::::::::e tt:::::::::::tt uu::::::::uu:::up::::::::::::::pp !!:!!"); + System.out.println("MMMMMMMM MMMMMMMM eeeeeeeeeeeeee eeeeeeeeeeeeee ttttttttttt uuuuuuuu uuuup::::::pppppppp !!! "); + System.out.println(" p:::::p "); + System.out.println(" p:::::p "); + System.out.println(" p:::::::p "); + System.out.println(" p:::::::p "); + System.out.println(" p:::::::p "); + System.out.println(" ppppppppp "); + System.out.println(" "); + System.out.println("Welecom to your new meetup application ! Lets meetup ..."); + } +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/Main.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/Main.java new file mode 100644 index 0000000..565a4d9 --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/Main.java @@ -0,0 +1,26 @@ +package com.github.swcraftlyon.meetup.infra; + +import com.github.swcraftlyon.meetup.domain.IPlanner; +import com.github.swcraftlyon.meetup.domain.entities.Event; +import com.github.swcraftlyon.meetup.domain.services.EventManager; +import com.github.swcraftlyon.meetup.domain.services.IEventManager; +import com.github.swcraftlyon.meetup.infra.adapters.repositories.PlannerRepository; +import com.github.swcraftlyon.meetup.infra.dao.IEventDAO; +import com.github.swcraftlyon.meetup.infra.dao.MangoEventDao; + + +public class Main { + + public static void main(String[] args) { + + ApplicationConfig.getStartupMessage(); + //Infra + IEventDAO eventDAO = new MangoEventDao(); + //Adapter + IPlanner planner = new PlannerRepository(eventDAO); + // Domain Model + IEventManager eventManager = new EventManager(planner); + Event event = eventManager.initialiseAnEvent("Mix-it Lyon"); + + } +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/FacebookAdapter.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/FacebookAdapter.java new file mode 100644 index 0000000..1a38a29 --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/FacebookAdapter.java @@ -0,0 +1,5 @@ +package com.github.swcraftlyon.meetup.infra.adapters; + + +public class FacebookAdapter { +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/repositories/PlannerRepository.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/repositories/PlannerRepository.java new file mode 100644 index 0000000..29665ff --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/repositories/PlannerRepository.java @@ -0,0 +1,26 @@ +package com.github.swcraftlyon.meetup.infra.adapters.repositories; + +import com.github.swcraftlyon.meetup.domain.entities.Event; +import com.github.swcraftlyon.meetup.domain.IPlanner; +import com.github.swcraftlyon.meetup.infra.dao.IEventDAO; +import org.bson.Document; + + +public class PlannerRepository implements IPlanner { + + private final IEventDAO eventDAO; + + public PlannerRepository(IEventDAO eventDAO) { + this.eventDAO = eventDAO; + } + + @Override + public void record(Event event) { + + Document document = new Document(); + document.append("id", 1); + document.append("title", event.getTitle()); + + eventDAO.persist(document); + } +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/IEventDAO.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/IEventDAO.java new file mode 100644 index 0000000..30cda1a --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/IEventDAO.java @@ -0,0 +1,9 @@ +package com.github.swcraftlyon.meetup.infra.dao; + +import org.bson.Document; + + +public interface IEventDAO { + + void persist(Document document); +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDao.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDao.java new file mode 100644 index 0000000..1cdd15d --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDao.java @@ -0,0 +1,41 @@ +package com.github.swcraftlyon.meetup.infra.dao; + +import com.mongodb.MongoClient; +import com.mongodb.MongoClientURI; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import org.bson.Document; + + +public class MangoEventDao implements IEventDAO { + + public static final String EVENT_DB = "EventDB"; + public static final String MONGODB_LOCALHOST_27017 = "mongodb://localhost:27017"; + public static final String COLLECTION_EVENTS = "events"; + + private static MongoClient mongoClient; + + @Override + public void persist(Document document) { + + MongoDatabase database = getDataBase(); + MongoCollection eventCollection = database.getCollection(COLLECTION_EVENTS); + + eventCollection.insertOne(document); + this.closeDataBase(); + + } + + public static synchronized MongoDatabase getDataBase(){ + if(mongoClient == null){ + mongoClient = new MongoClient(new MongoClientURI(MONGODB_LOCALHOST_27017)); + } + return mongoClient.getDatabase(EVENT_DB); + } + + private void closeDataBase(){ + if(mongoClient != null){ + mongoClient.close(); + } + } +} diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/domain/EventManagerTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/domain/EventManagerTest.java new file mode 100644 index 0000000..22decd8 --- /dev/null +++ b/Events/src/test/java/com/github/swcraftlyon/meetup/domain/EventManagerTest.java @@ -0,0 +1,22 @@ +package com.github.swcraftlyon.meetup.domain; + +import com.github.swcraftlyon.meetup.domain.entities.Event; +import com.github.swcraftlyon.meetup.domain.services.EventManager; +import com.github.swcraftlyon.meetup.domain.services.IEventManager; +import org.junit.Test; +import org.mockito.Mockito; + +import static org.assertj.core.api.Assertions.assertThat; + + +public class EventManagerTest { + + @Test + public void shouldCreateAnEvent() throws Exception { + + IPlanner planner = Mockito.mock(IPlanner.class); + IEventManager eventManager = new EventManager(planner); + Event event = eventManager.initialiseAnEvent("Mix-it Lyon"); + assertThat(event.getTitle()).isEqualTo("Mix-it Lyon"); + } +} diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/EventTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/domain/entities/EventTest.java similarity index 86% rename from Events/src/test/java/com/github/swcraftlyon/meetup/EventTest.java rename to Events/src/test/java/com/github/swcraftlyon/meetup/domain/entities/EventTest.java index ca01bb7..bde8513 100644 --- a/Events/src/test/java/com/github/swcraftlyon/meetup/EventTest.java +++ b/Events/src/test/java/com/github/swcraftlyon/meetup/domain/entities/EventTest.java @@ -1,4 +1,4 @@ -package com.github.swcraftlyon.meetup; +package com.github.swcraftlyon.meetup.domain.entities; import org.junit.Test; diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/FacebookAdapterTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/FacebookAdapterTest.java new file mode 100644 index 0000000..ac84f53 --- /dev/null +++ b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/FacebookAdapterTest.java @@ -0,0 +1,7 @@ +package com.github.swcraftlyon.meetup.infra; + + +public class FacebookAdapterTest { + + //TODO Implement this class +} diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDaoTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDaoTest.java new file mode 100644 index 0000000..acdfb3b --- /dev/null +++ b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDaoTest.java @@ -0,0 +1,35 @@ +package com.github.swcraftlyon.meetup.infra.dao; + +import com.mongodb.client.FindIterable; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.model.Filters; +import org.bson.Document; +import org.junit.Assert; +import org.junit.Test; + + +public class MangoEventDaoTest { + + + @Test + public void shouldGetMangoDataBase() throws Exception { + Assert.assertNotNull(MangoEventDao.getDataBase()); + } + + @Test + public void shouldPersistInDataBase() throws Exception { + MongoDatabase mongoDatabase = MangoEventDao.getDataBase(); + MongoCollection testCollection = mongoDatabase.getCollection("Test_Collection"); + + Document document = new Document(); + document.append("Test","Do you persist ?"); + document.append("OK","Yes I'm OK"); + testCollection.insertOne(document); + + FindIterable results = testCollection.find(Filters.eq("Test","Do you persist ?")); + Assert.assertEquals(results.first().get("OK"),"Yes I'm OK"); + + } + +} diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/repositories/PlannerRepositoryTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/repositories/PlannerRepositoryTest.java new file mode 100644 index 0000000..38ef2ee --- /dev/null +++ b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/repositories/PlannerRepositoryTest.java @@ -0,0 +1,18 @@ +package com.github.swcraftlyon.meetup.infra.repositories; + +import com.github.swcraftlyon.meetup.domain.IPlanner; +import com.github.swcraftlyon.meetup.domain.entities.Event; +import org.junit.Test; +import org.mockito.Mockito; + + +public class PlannerRepositoryTest { + + @Test + public void shouldRecordAnEvent() throws Exception { + IPlanner planner = Mockito.mock(IPlanner.class); + Event event = new Event("Mix-it Lyon"); + planner.record(event); + Mockito.verify(planner).record(event); + } +} From aef822168446bd3771d6dd5a8984c4a3cbf79de0 Mon Sep 17 00:00:00 2001 From: Amine Date: Sat, 16 Apr 2016 14:59:24 +0200 Subject: [PATCH 2/2] Planner.java : Rename interface IPlanner to Planner. PlannerRepository.java : Delete the index id append PlannerRepository.java : rename persist to save PlannerRepository.java : delete empty lignes FacebookAdapter.java : Delete the class MongoConfiguration.java : Create a mongoConfiguration class for externelize database parameters MongoEventDao.java : change the signature of the constructor to get a MongoDatabase MongoEventDao.java : Delete empty lines MongoLauncher.java : create a MongoLuancher class EventDAO.java : rename an EventDAO from IEventDAO EventDAO.java : rename persist to save add find and findByKey methods Delete ApplicationConfig.java EventManagerTest.java : Delete static import of AssertJ and remplace it with Junit Asset Create FongoLauncher for portable mongodb PlannerRepositoryTest : rename method test Add FakeMongo dependency and changing naming format --- Events/build.gradle | 8 +-- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../domain/{IPlanner.java => Planner.java} | 2 +- .../meetup/domain/services/EventManager.java | 6 +-- .../meetup/infra/ApplicationConfig.java | 32 ------------ .../github/swcraftlyon/meetup/infra/Main.java | 18 ++++--- .../infra/adapters/FacebookAdapter.java | 5 -- .../repositories/PlannerRepository.java | 16 +++--- .../meetup/infra/dao/EventDAO.java | 12 +++++ .../meetup/infra/dao/IEventDAO.java | 9 ---- .../meetup/infra/dao/MangoEventDao.java | 41 --------------- .../infra/dao/mongo/MongoConfiguration.java | 26 ++++++++++ .../meetup/infra/dao/mongo/MongoEventDao.java | 43 ++++++++++++++++ .../meetup/infra/dao/mongo/MongoLauncher.java | 29 +++++++++++ .../meetup/domain/EventManagerTest.java | 9 ++-- .../meetup/infra/FacebookAdapterTest.java | 7 --- .../meetup/infra/dao/FongoLauncher.java | 18 +++++++ .../meetup/infra/dao/MangoEventDaoTest.java | 35 ------------- .../meetup/infra/dao/MongoEventDaoTest.java | 50 +++++++++++++++++++ .../repositories/PlannerRepositoryTest.java | 8 +-- build.gradle | 32 ++++++++++++ 21 files changed, 246 insertions(+), 162 deletions(-) rename Events/src/main/java/com/github/swcraftlyon/meetup/domain/{IPlanner.java => Planner.java} (83%) delete mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/ApplicationConfig.java delete mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/FacebookAdapter.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/EventDAO.java delete mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/IEventDAO.java delete mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDao.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoConfiguration.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoEventDao.java create mode 100644 Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoLauncher.java delete mode 100644 Events/src/test/java/com/github/swcraftlyon/meetup/infra/FacebookAdapterTest.java create mode 100644 Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/FongoLauncher.java delete mode 100644 Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDaoTest.java create mode 100644 Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MongoEventDaoTest.java create mode 100644 build.gradle diff --git a/Events/build.gradle b/Events/build.gradle index bf126c4..13a1e6f 100644 --- a/Events/build.gradle +++ b/Events/build.gradle @@ -11,9 +11,9 @@ repositories { dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' testCompile group: 'org.assertj', name: 'assertj-core', version: '3.3.0' - testCompile 'org.mockito:mockito-core:1.10.19' - - compile 'org.mongodb:mongo-java-driver:3.2.0' - + testCompile group: 'org.mockito', name: 'mockito-core', version: '1.10.19' + testCompile group: 'com.github.fakemongo', name: 'fongo', version: '2.0.6' + testCompile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.21' + compile group: 'org.mongodb', name: 'mongo-java-driver', version: '3.2.0' } diff --git a/Events/gradle/wrapper/gradle-wrapper.properties b/Events/gradle/wrapper/gradle-wrapper.properties index 252bd87..9d10f34 100644 --- a/Events/gradle/wrapper/gradle-wrapper.properties +++ b/Events/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Sun Feb 07 12:17:39 CET 2016 +#Wed Apr 13 19:27:49 CEST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/domain/IPlanner.java b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/Planner.java similarity index 83% rename from Events/src/main/java/com/github/swcraftlyon/meetup/domain/IPlanner.java rename to Events/src/main/java/com/github/swcraftlyon/meetup/domain/Planner.java index 8cc1fac..48fefa0 100644 --- a/Events/src/main/java/com/github/swcraftlyon/meetup/domain/IPlanner.java +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/Planner.java @@ -3,7 +3,7 @@ import com.github.swcraftlyon.meetup.domain.entities.Event; -public interface IPlanner { +public interface Planner { void record(Event event); } diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/EventManager.java b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/EventManager.java index bc849ea..012a7ed 100644 --- a/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/EventManager.java +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/domain/services/EventManager.java @@ -1,14 +1,14 @@ package com.github.swcraftlyon.meetup.domain.services; -import com.github.swcraftlyon.meetup.domain.IPlanner; +import com.github.swcraftlyon.meetup.domain.Planner; import com.github.swcraftlyon.meetup.domain.entities.Event; public class EventManager implements IEventManager { - private final IPlanner planner; + private final Planner planner; - public EventManager(IPlanner planner) { + public EventManager(Planner planner) { this.planner = planner; } diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/ApplicationConfig.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/ApplicationConfig.java deleted file mode 100644 index 624026b..0000000 --- a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/ApplicationConfig.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.github.swcraftlyon.meetup.infra; - - -public class ApplicationConfig { - - public static void getStartupMessage(){ - System.out.println("MMMMMMMM MMMMMMMM tttt !!! "); - System.out.println("M:::::::M M:::::::M ttt:::t !!:!!"); - System.out.println("M::::::::M M::::::::M t:::::t !:::!"); - System.out.println("M:::::::::M M:::::::::M t:::::t !:::!"); - System.out.println("M::::::::::M M::::::::::M eeeeeeeeeeee eeeeeeeeeeee ttttttt:::::ttttttt uuuuuu uuuuuu ppppp ppppppppp !:::!"); - System.out.println("M:::::::::::M M:::::::::::M ee::::::::::::ee ee::::::::::::ee t:::::::::::::::::t u::::u u::::u p::::ppp:::::::::p !:::!"); - System.out.println("M:::::::M::::M M::::M:::::::M e::::::eeeee:::::ee e::::::eeeee:::::eet:::::::::::::::::t u::::u u::::u p:::::::::::::::::p !:::!"); - System.out.println("M::::::M M::::M M::::M M::::::Me::::::e e:::::ee::::::e e:::::etttttt:::::::tttttt u::::u u::::u pp::::::ppppp::::::p !:::!"); - System.out.println("M::::::M M::::M::::M M::::::Me:::::::eeeee::::::ee:::::::eeeee::::::e t:::::t u::::u u::::u p:::::p p:::::p !:::!"); - System.out.println("M::::::M M:::::::M M::::::Me:::::::::::::::::e e:::::::::::::::::e t:::::t u::::u u::::u p:::::p p:::::p !:::!"); - System.out.println("M::::::M M:::::M M::::::Me::::::eeeeeeeeeee e::::::eeeeeeeeeee t:::::t u::::u u::::u p:::::p p:::::p !!:!!"); - System.out.println("M::::::M MMMMM M::::::Me:::::::e e:::::::e t:::::t ttttttu:::::uuuu:::::u p:::::p p::::::p !!! "); - System.out.println("M::::::M M::::::Me::::::::e e::::::::e t::::::tttt:::::tu:::::::::::::::uup:::::ppppp:::::::p "); - System.out.println("M::::::M M::::::M e::::::::eeeeeeee e::::::::eeeeeeee tt::::::::::::::t u:::::::::::::::up::::::::::::::::p !!! "); - System.out.println("M::::::M M::::::M ee:::::::::::::e ee:::::::::::::e tt:::::::::::tt uu::::::::uu:::up::::::::::::::pp !!:!!"); - System.out.println("MMMMMMMM MMMMMMMM eeeeeeeeeeeeee eeeeeeeeeeeeee ttttttttttt uuuuuuuu uuuup::::::pppppppp !!! "); - System.out.println(" p:::::p "); - System.out.println(" p:::::p "); - System.out.println(" p:::::::p "); - System.out.println(" p:::::::p "); - System.out.println(" p:::::::p "); - System.out.println(" ppppppppp "); - System.out.println(" "); - System.out.println("Welecom to your new meetup application ! Lets meetup ..."); - } -} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/Main.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/Main.java index 565a4d9..fa15ea0 100644 --- a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/Main.java +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/Main.java @@ -1,26 +1,28 @@ package com.github.swcraftlyon.meetup.infra; -import com.github.swcraftlyon.meetup.domain.IPlanner; +import com.github.swcraftlyon.meetup.domain.Planner; import com.github.swcraftlyon.meetup.domain.entities.Event; import com.github.swcraftlyon.meetup.domain.services.EventManager; import com.github.swcraftlyon.meetup.domain.services.IEventManager; import com.github.swcraftlyon.meetup.infra.adapters.repositories.PlannerRepository; -import com.github.swcraftlyon.meetup.infra.dao.IEventDAO; -import com.github.swcraftlyon.meetup.infra.dao.MangoEventDao; +import com.github.swcraftlyon.meetup.infra.dao.EventDAO; +import com.github.swcraftlyon.meetup.infra.dao.mongo.MongoConfiguration; +import com.github.swcraftlyon.meetup.infra.dao.mongo.MongoEventDao; +import com.github.swcraftlyon.meetup.infra.dao.mongo.MongoLauncher; public class Main { public static void main(String[] args) { - - ApplicationConfig.getStartupMessage(); + MongoConfiguration mongoConfiguration = new MongoConfiguration("localhost", "27017", "MeetupDB"); //Infra - IEventDAO eventDAO = new MangoEventDao(); + EventDAO eventDAO = new MongoEventDao(MongoLauncher.getMongoDatabase(mongoConfiguration)); //Adapter - IPlanner planner = new PlannerRepository(eventDAO); + Planner planner = new PlannerRepository(eventDAO); // Domain Model IEventManager eventManager = new EventManager(planner); - Event event = eventManager.initialiseAnEvent("Mix-it Lyon"); + Event event = eventManager.initialiseAnEvent("Mix-it Lyon"); + System.out.println("Event : " + event.getTitle() + " is created."); } } diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/FacebookAdapter.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/FacebookAdapter.java deleted file mode 100644 index 1a38a29..0000000 --- a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/FacebookAdapter.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.github.swcraftlyon.meetup.infra.adapters; - - -public class FacebookAdapter { -} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/repositories/PlannerRepository.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/repositories/PlannerRepository.java index 29665ff..ebcfa86 100644 --- a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/repositories/PlannerRepository.java +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/adapters/repositories/PlannerRepository.java @@ -1,26 +1,26 @@ package com.github.swcraftlyon.meetup.infra.adapters.repositories; import com.github.swcraftlyon.meetup.domain.entities.Event; -import com.github.swcraftlyon.meetup.domain.IPlanner; -import com.github.swcraftlyon.meetup.infra.dao.IEventDAO; +import com.github.swcraftlyon.meetup.domain.Planner; +import com.github.swcraftlyon.meetup.infra.dao.EventDAO; import org.bson.Document; -public class PlannerRepository implements IPlanner { +public class PlannerRepository implements Planner { - private final IEventDAO eventDAO; + private final EventDAO eventDAO; - public PlannerRepository(IEventDAO eventDAO) { + public PlannerRepository(EventDAO eventDAO) { this.eventDAO = eventDAO; } @Override public void record(Event event) { - Document document = new Document(); - document.append("id", 1); document.append("title", event.getTitle()); - eventDAO.persist(document); + eventDAO.save(document); } + + } diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/EventDAO.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/EventDAO.java new file mode 100644 index 0000000..09509bf --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/EventDAO.java @@ -0,0 +1,12 @@ +package com.github.swcraftlyon.meetup.infra.dao; + +import java.util.List; + +public interface EventDAO { + + void save(T object); + + List find(); + + T findByKey(String key, String valueOfKey); +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/IEventDAO.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/IEventDAO.java deleted file mode 100644 index 30cda1a..0000000 --- a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/IEventDAO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.github.swcraftlyon.meetup.infra.dao; - -import org.bson.Document; - - -public interface IEventDAO { - - void persist(Document document); -} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDao.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDao.java deleted file mode 100644 index 1cdd15d..0000000 --- a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDao.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.github.swcraftlyon.meetup.infra.dao; - -import com.mongodb.MongoClient; -import com.mongodb.MongoClientURI; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; -import org.bson.Document; - - -public class MangoEventDao implements IEventDAO { - - public static final String EVENT_DB = "EventDB"; - public static final String MONGODB_LOCALHOST_27017 = "mongodb://localhost:27017"; - public static final String COLLECTION_EVENTS = "events"; - - private static MongoClient mongoClient; - - @Override - public void persist(Document document) { - - MongoDatabase database = getDataBase(); - MongoCollection eventCollection = database.getCollection(COLLECTION_EVENTS); - - eventCollection.insertOne(document); - this.closeDataBase(); - - } - - public static synchronized MongoDatabase getDataBase(){ - if(mongoClient == null){ - mongoClient = new MongoClient(new MongoClientURI(MONGODB_LOCALHOST_27017)); - } - return mongoClient.getDatabase(EVENT_DB); - } - - private void closeDataBase(){ - if(mongoClient != null){ - mongoClient.close(); - } - } -} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoConfiguration.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoConfiguration.java new file mode 100644 index 0000000..a9736bf --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoConfiguration.java @@ -0,0 +1,26 @@ +package com.github.swcraftlyon.meetup.infra.dao.mongo; + +public class MongoConfiguration { + + private String dataBaseName; + private String dataBaseHost; + private String dataBasePort; + + public MongoConfiguration(String dataBaseHost, String dataBasePort, String dataBaseName) { + this.dataBaseName = dataBaseName; + this.dataBaseHost = dataBaseHost; + this.dataBasePort = dataBasePort; + } + + public String getDataBaseName() { + return dataBaseName; + } + + public String getDataBaseHost() { + return dataBaseHost; + } + + public String getDataBasePort() { + return dataBasePort; + } +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoEventDao.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoEventDao.java new file mode 100644 index 0000000..81059bc --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoEventDao.java @@ -0,0 +1,43 @@ +package com.github.swcraftlyon.meetup.infra.dao.mongo; + +import com.github.swcraftlyon.meetup.infra.dao.EventDAO; +import com.mongodb.client.FindIterable; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.model.Filters; +import org.bson.Document; + +import java.util.ArrayList; +import java.util.List; + + +public class MongoEventDao implements EventDAO { + + + public static final String EVENT_COLLECTION = "event_collection"; + private MongoCollection eventCollection; + + public MongoEventDao(final MongoDatabase mongoDatabase) { + eventCollection = mongoDatabase.getCollection(EVENT_COLLECTION); + } + + @Override + public void save(Document document) { + eventCollection.insertOne(document); + } + + @Override + public List find() { + List documentsToReturn = new ArrayList(); + final FindIterable documents = eventCollection.find(); + for (Document document : documents) { + documentsToReturn.add(document); + } + return documentsToReturn; + } + + @Override + public Document findByKey(String key, String value) { + return eventCollection.find(Filters.eq(key, value)).first(); + } +} diff --git a/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoLauncher.java b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoLauncher.java new file mode 100644 index 0000000..36b0a2e --- /dev/null +++ b/Events/src/main/java/com/github/swcraftlyon/meetup/infra/dao/mongo/MongoLauncher.java @@ -0,0 +1,29 @@ +package com.github.swcraftlyon.meetup.infra.dao.mongo; + + +import com.mongodb.MongoClient; +import com.mongodb.MongoClientURI; +import com.mongodb.client.MongoDatabase; + +public class MongoLauncher{ + + private static MongoClient mongoClient; + private static MongoDatabase mongoDatabase; + + public static synchronized MongoClient getMongoClient(MongoConfiguration mongoConfiguration){ + if (mongoClient==null){ + String uri = new String("mongodb://").concat(mongoConfiguration.getDataBaseHost()) + .concat(":").concat(mongoConfiguration.getDataBasePort()); + + mongoClient = new MongoClient(new MongoClientURI(uri)); + } + return mongoClient; + } + + public static synchronized MongoDatabase getMongoDatabase(MongoConfiguration mongoConfiguration) { + if(mongoDatabase == null){ + mongoDatabase = getMongoClient(mongoConfiguration).getDatabase(mongoConfiguration.getDataBaseName()); + } + return mongoDatabase; + } +} diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/domain/EventManagerTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/domain/EventManagerTest.java index 22decd8..28a0c01 100644 --- a/Events/src/test/java/com/github/swcraftlyon/meetup/domain/EventManagerTest.java +++ b/Events/src/test/java/com/github/swcraftlyon/meetup/domain/EventManagerTest.java @@ -3,20 +3,19 @@ import com.github.swcraftlyon.meetup.domain.entities.Event; import com.github.swcraftlyon.meetup.domain.services.EventManager; import com.github.swcraftlyon.meetup.domain.services.IEventManager; -import org.junit.Test; +import org.junit.Assert; import org.mockito.Mockito; +import org.junit.Test; -import static org.assertj.core.api.Assertions.assertThat; public class EventManagerTest { @Test public void shouldCreateAnEvent() throws Exception { - - IPlanner planner = Mockito.mock(IPlanner.class); + Planner planner = Mockito.mock(Planner.class); IEventManager eventManager = new EventManager(planner); Event event = eventManager.initialiseAnEvent("Mix-it Lyon"); - assertThat(event.getTitle()).isEqualTo("Mix-it Lyon"); + Assert.assertEquals(event.getTitle(),"Mix-it Lyon"); } } diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/FacebookAdapterTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/FacebookAdapterTest.java deleted file mode 100644 index ac84f53..0000000 --- a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/FacebookAdapterTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.github.swcraftlyon.meetup.infra; - - -public class FacebookAdapterTest { - - //TODO Implement this class -} diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/FongoLauncher.java b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/FongoLauncher.java new file mode 100644 index 0000000..c88f013 --- /dev/null +++ b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/FongoLauncher.java @@ -0,0 +1,18 @@ +package com.github.swcraftlyon.meetup.infra.dao; + + +import com.github.fakemongo.Fongo; +import com.mongodb.client.MongoDatabase; + +public class FongoLauncher{ + + private static MongoDatabase mongoDatabase; + + public static synchronized MongoDatabase getMongoDatabase() { + if(mongoDatabase == null){ + Fongo fongo = new Fongo("Fake Mongo Server"); + mongoDatabase = fongo.getDatabase("meetupTestDB"); + } + return mongoDatabase; + } +} diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDaoTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDaoTest.java deleted file mode 100644 index acdfb3b..0000000 --- a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MangoEventDaoTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.github.swcraftlyon.meetup.infra.dao; - -import com.mongodb.client.FindIterable; -import com.mongodb.client.MongoCollection; -import com.mongodb.client.MongoDatabase; -import com.mongodb.client.model.Filters; -import org.bson.Document; -import org.junit.Assert; -import org.junit.Test; - - -public class MangoEventDaoTest { - - - @Test - public void shouldGetMangoDataBase() throws Exception { - Assert.assertNotNull(MangoEventDao.getDataBase()); - } - - @Test - public void shouldPersistInDataBase() throws Exception { - MongoDatabase mongoDatabase = MangoEventDao.getDataBase(); - MongoCollection testCollection = mongoDatabase.getCollection("Test_Collection"); - - Document document = new Document(); - document.append("Test","Do you persist ?"); - document.append("OK","Yes I'm OK"); - testCollection.insertOne(document); - - FindIterable results = testCollection.find(Filters.eq("Test","Do you persist ?")); - Assert.assertEquals(results.first().get("OK"),"Yes I'm OK"); - - } - -} diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MongoEventDaoTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MongoEventDaoTest.java new file mode 100644 index 0000000..22ea4a1 --- /dev/null +++ b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/dao/MongoEventDaoTest.java @@ -0,0 +1,50 @@ +package com.github.swcraftlyon.meetup.infra.dao; + +import com.github.swcraftlyon.meetup.infra.dao.mongo.MongoEventDao; +import org.bson.Document; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import java.util.List; + +public class MongoEventDaoTest { + + public static final String DID_YOU_PERSIST = "Did You Persist ?"; + public static final String YES_I_DID = "Yes i Did."; + + private EventDAO eventDAO; + + @Before + public void setUp() throws Exception { + eventDAO = new MongoEventDao(FongoLauncher.getMongoDatabase()); + } + + @Test + public void shouldPersistWhenCallingSaveMethod() throws Exception { + + Document documentToSave = new Document(); + documentToSave.append(DID_YOU_PERSIST, YES_I_DID); + eventDAO.save(documentToSave); + + Document documentSaved = (Document) eventDAO.findByKey(DID_YOU_PERSIST,YES_I_DID); + Assert.assertEquals(documentSaved.get(DID_YOU_PERSIST, String.class), documentToSave.get(DID_YOU_PERSIST, String.class)); + } + + @Test + public void shouldFindAtLeastOneEventWhenWeSaveOne() throws Exception { + Document documentToSave = new Document(); + documentToSave.append(DID_YOU_PERSIST, YES_I_DID); + eventDAO.save(documentToSave); + + final List results = eventDAO.find(); + Assert.assertNotNull(results); + Assert.assertTrue(results.size() > 0); + } + + @After + public void tearDown() throws Exception { + FongoLauncher.getMongoDatabase().drop(); + } +} diff --git a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/repositories/PlannerRepositoryTest.java b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/repositories/PlannerRepositoryTest.java index 38ef2ee..258a8db 100644 --- a/Events/src/test/java/com/github/swcraftlyon/meetup/infra/repositories/PlannerRepositoryTest.java +++ b/Events/src/test/java/com/github/swcraftlyon/meetup/infra/repositories/PlannerRepositoryTest.java @@ -1,6 +1,6 @@ package com.github.swcraftlyon.meetup.infra.repositories; -import com.github.swcraftlyon.meetup.domain.IPlanner; +import com.github.swcraftlyon.meetup.domain.Planner; import com.github.swcraftlyon.meetup.domain.entities.Event; import org.junit.Test; import org.mockito.Mockito; @@ -9,10 +9,12 @@ public class PlannerRepositoryTest { @Test - public void shouldRecordAnEvent() throws Exception { - IPlanner planner = Mockito.mock(IPlanner.class); + public void shouldRecordAnEventWhenCallingRecordMethod() throws Exception { + Planner planner = Mockito.mock(Planner.class); Event event = new Event("Mix-it Lyon"); planner.record(event); Mockito.verify(planner).record(event); } + + } diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..afdb6de --- /dev/null +++ b/build.gradle @@ -0,0 +1,32 @@ +/* + * This build file was auto generated by running the Gradle 'init' task + * by 'amine' at '13/04/16 19:13' with Gradle 2.5 + * + * This generated file contains a commented-out sample Java project to get you started. + * For more details take a look at the Java Quickstart chapter in the Gradle + * user guide available at http://gradle.org/docs/2.5/userguide/tutorial_java_projects.html + */ + +/* +// Apply the java plugin to add support for Java +apply plugin: 'java' + +// In this section you declare where to find the dependencies of your project +repositories { + // Use 'jcenter' for resolving your dependencies. + // You can declare any Maven/Ivy/file repository here. + jcenter() +} + +// In this section you declare the dependencies for your production and test code +dependencies { + // The production code uses the SLF4J logging API at compile time + compile 'org.slf4j:slf4j-api:1.7.12' + + // Declare the dependency for your favourite test framework you want to use in your tests. + // TestNG is also supported by the Gradle Test task. Just change the + // testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add + // 'test.useTestNG()' to your build script. + testCompile 'junit:junit:4.12' +} +*/