diff --git a/pom.xml b/pom.xml
index 9db53a7..bd253d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,39 +9,30 @@
TibiaWikiApi
https://github.com/benjaminkomen/TibiaWikiApi
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
-
-
1.8
1.8
UTF-8
- 1.5.10.RELEASE
+ UTF-8
+ 1.8
org.springframework.boot
spring-boot-starter-parent
- 1.5.10.RELEASE
+ 2.0.0.RELEASE
+
org.springframework.boot
- spring-boot-starter-web
- ${spring.boot.starter}
+ spring-boot-starter
org.springframework.boot
spring-boot-starter-jersey
- ${spring.boot.starter}
@@ -60,7 +51,7 @@
org.slf4j
slf4j-simple
- 1.6.2
+ 1.7.25
@@ -74,14 +65,14 @@
org.json
json
- 20160810
+ 20180130
org.projectlombok
lombok
- 1.16.16
+ 1.16.20
provided
@@ -89,7 +80,7 @@
org.jetbrains
annotations
- 15.0
+ 16.0.1
@@ -101,9 +92,9 @@
- junit
- junit
- 4.12
+ org.junit.jupiter
+ junit-jupiter-api
+ 5.1.0
test
@@ -131,16 +122,24 @@
org.objenesis
objenesis
- 1.3
+ 2.6
test
org.springframework.boot
spring-boot-starter-test
- ${spring.boot.starter}
test
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
diff --git a/src/main/java/com/tibiawiki/Application.java b/src/main/java/com/tibiawiki/Application.java
deleted file mode 100644
index d47786b..0000000
--- a/src/main/java/com/tibiawiki/Application.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.tibiawiki;
-
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.builder.SpringApplicationBuilder;
-import org.springframework.boot.web.support.SpringBootServletInitializer;
-
-@SpringBootApplication
-public class Application extends SpringBootServletInitializer {
-
- public static void main(String[] args) {
- new Application()
- .configure(new SpringApplicationBuilder(Application.class))
- .run(args);
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/tibiawiki/TibiaWikiApiApplication.java b/src/main/java/com/tibiawiki/TibiaWikiApiApplication.java
new file mode 100644
index 0000000..6612523
--- /dev/null
+++ b/src/main/java/com/tibiawiki/TibiaWikiApiApplication.java
@@ -0,0 +1,12 @@
+package com.tibiawiki;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class TibiaWikiApiApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(TibiaWikiApiApplication.class, args);
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/tibiawiki/domain/factories/ArticleFactory.java b/src/main/java/com/tibiawiki/domain/factories/ArticleFactory.java
index 3dc9cbe..fcf3e93 100644
--- a/src/main/java/com/tibiawiki/domain/factories/ArticleFactory.java
+++ b/src/main/java/com/tibiawiki/domain/factories/ArticleFactory.java
@@ -1,5 +1,6 @@
package com.tibiawiki.domain.factories;
+import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Strings;
import com.tibiawiki.domain.objects.Creature;
@@ -31,7 +32,6 @@ public class ArticleFactory {
private static final String ITEM_ID = "itemid";
private static final List ITEMS_WITH_NO_DROPPEDBY_LIST = Arrays.asList("Gold Coin", "Platinum Coin");
-
private Article article;
private String articleName;
private String objectType;
@@ -170,6 +170,7 @@ private JSONObject enhanceJsonObject(JSONObject jsonObject) {
private T mapJsonToObject(String wikiObjectJson, Class clazz) {
ObjectMapper objectMapper = new ObjectMapper();
// objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+ objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
try {
return objectMapper.readValue(wikiObjectJson, clazz);
} catch (IOException e) {
diff --git a/src/main/java/com/tibiawiki/domain/jackson/CustomDeserializer.java b/src/main/java/com/tibiawiki/domain/jackson/CustomDeserializer.java
deleted file mode 100644
index cc181d0..0000000
--- a/src/main/java/com/tibiawiki/domain/jackson/CustomDeserializer.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.tibiawiki.domain.jackson;
-
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.databind.DeserializationContext;
-import com.fasterxml.jackson.databind.JsonDeserializer;
-import com.fasterxml.jackson.databind.JsonNode;
-
-import java.io.IOException;
-
-public class CustomDeserializer extends JsonDeserializer {
-
- @Override
- public String deserialize(JsonParser jsonParser, DeserializationContext context) throws IOException {
- JsonNode node = jsonParser.readValueAsTree();
- if (node.asText().isEmpty()) {
- return null;
- }
- return node.toString();
- }
-
-}
diff --git a/src/main/java/com/tibiawiki/domain/objects/TibiaWikiBot.java b/src/main/java/com/tibiawiki/domain/objects/TibiaWikiBot.java
index 9d780a7..7ec346b 100644
--- a/src/main/java/com/tibiawiki/domain/objects/TibiaWikiBot.java
+++ b/src/main/java/com/tibiawiki/domain/objects/TibiaWikiBot.java
@@ -1,38 +1,12 @@
package com.tibiawiki.domain.objects;
import net.sourceforge.jwbf.mediawiki.bots.MediaWikiBot;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.InputStream;
-import java.util.Properties;
public class TibiaWikiBot extends MediaWikiBot {
- private static final Logger log = LoggerFactory.getLogger(TibiaWikiBot.class);
-
private static final String DEFAULT_WIKI_URI = "https://tibia.wikia.com/";
public TibiaWikiBot() {
super(DEFAULT_WIKI_URI);
}
-
- public void login() {
- String username = this.getProperty("username");
- String password = this.getProperty("password");
- super.login(username, password);
- }
-
- private String getProperty(String propertyName) {
- String output = "";
- try {
- Properties props = new Properties();
- InputStream is = props.getClass().getResourceAsStream("/credentials.properties");
- props.load(is);
- return props.getProperty(propertyName);
- } catch(Exception ex) {
- log.error(String.valueOf(ex));
- }
- return output;
- }
}
diff --git a/src/main/java/com/tibiawiki/process/RetrieveCreatures.java b/src/main/java/com/tibiawiki/process/RetrieveCreatures.java
index 5330db2..eae1f04 100644
--- a/src/main/java/com/tibiawiki/process/RetrieveCreatures.java
+++ b/src/main/java/com/tibiawiki/process/RetrieveCreatures.java
@@ -3,7 +3,6 @@
import com.tibiawiki.domain.objects.Creature;
import com.tibiawiki.domain.objects.TibiaWikiBot;
import com.tibiawiki.domain.repositories.WikiArticleRepository;
-import net.sourceforge.jwbf.mediawiki.actions.queries.CategoryMembersSimple;
import one.util.streamex.StreamEx;
import java.util.ArrayList;
@@ -20,31 +19,31 @@ public class RetrieveCreatures {
private WikiArticleRepository wikiArticleRepository;
public RetrieveCreatures() {
- TibiaWikiBot tibiaWikiBot = new TibiaWikiBot();
-// tibiaWikiBot.login();
- wikiArticleRepository = new WikiArticleRepository(tibiaWikiBot);
+ wikiArticleRepository = new WikiArticleRepository(new TibiaWikiBot());
}
public List getCreatures() {
- CategoryMembersSimple pagesInCreaturesCategory = wikiArticleRepository.getMembersFromCategory(CATEGORY_CREATURES);
- CategoryMembersSimple pagesInListsCategory = wikiArticleRepository.getMembersFromCategory(CATEGORY_LISTS);
+ return getCreatures(false);
+ }
- List creaturesCategory = new ArrayList<>();
- for (String pageName : pagesInCreaturesCategory) {
+ public List getCreatures(boolean oneByOne) {
+ final List creaturesCategory = new ArrayList<>();
+ for (String pageName : wikiArticleRepository.getMembersFromCategory(CATEGORY_CREATURES)) {
creaturesCategory.add(pageName);
}
- List listsCategory = new ArrayList<>();
- for (String pageName : pagesInListsCategory) {
+ final List listsCategory = new ArrayList<>();
+ for (String pageName : wikiArticleRepository.getMembersFromCategory(CATEGORY_LISTS)) {
listsCategory.add(pageName);
}
- List pagesInCreaturesCategoryButNotLists = creaturesCategory.stream()
+ final List pagesInCreaturesCategoryButNotLists = creaturesCategory.stream()
.filter(page -> !listsCategory.contains(page))
.collect(Collectors.toList());
- return obtainCreaturesInBulk(pagesInCreaturesCategoryButNotLists);
-// return obtainCreaturesOneByOne(pagesInCreaturesCategoryButNotLists);
+ return oneByOne
+ ? obtainCreaturesOneByOne(pagesInCreaturesCategoryButNotLists)
+ : obtainCreaturesInBulk(pagesInCreaturesCategoryButNotLists);
}
public Optional getCreature(String pageName) {
diff --git a/src/main/java/com/tibiawiki/serviceinterface/CreaturesResource.java b/src/main/java/com/tibiawiki/serviceinterface/CreaturesResource.java
index 598a7c6..ea233f8 100644
--- a/src/main/java/com/tibiawiki/serviceinterface/CreaturesResource.java
+++ b/src/main/java/com/tibiawiki/serviceinterface/CreaturesResource.java
@@ -1,6 +1,5 @@
package com.tibiawiki.serviceinterface;
-import com.tibiawiki.domain.objects.Creature;
import com.tibiawiki.process.RetrieveCreatures;
import javax.ws.rs.GET;
@@ -9,8 +8,6 @@
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
-import java.util.List;
-import java.util.Optional;
@Path("/")
public class CreaturesResource {
@@ -34,10 +31,8 @@ public Response getHome() {
@Path("/creatures")
@Produces(MediaType.APPLICATION_JSON)
public Response getCreatures() {
- final List creatures = retrieveCreatures.getCreatures();
-
return Response.ok()
- .entity(creatures)
+ .entity(retrieveCreatures.getCreatures())
.header("Access-Control-Allow-Origin", "*")
.build();
}
@@ -46,16 +41,12 @@ public Response getCreatures() {
@Path("/creatures/{name}")
@Produces(MediaType.APPLICATION_JSON)
public Response getCreatureByName(@PathParam("name") String name) {
- final Optional creature = retrieveCreatures.getCreature(name);
-
- if (!creature.isPresent()) {
- return Response.status(Response.Status.NOT_FOUND)
- .build();
- } else {
- return Response.ok()
- .entity(creature.get())
- .header("Access-Control-Allow-Origin", "*")
- .build();
- }
+ return retrieveCreatures.getCreature(name)
+ .map(c -> Response.ok()
+ .entity(c)
+ .header("Access-Control-Allow-Origin", "*")
+ .build())
+ .orElseGet(() -> Response.status(Response.Status.NOT_FOUND)
+ .build());
}
}
diff --git a/src/main/java/com/tibiawiki/serviceinterface/TestResource.java b/src/main/java/com/tibiawiki/serviceinterface/TestResource.java
deleted file mode 100644
index 2d212a4..0000000
--- a/src/main/java/com/tibiawiki/serviceinterface/TestResource.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.tibiawiki.serviceinterface;
-
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-
-@Path("/")
-public class TestResource {
-
- @GET
- @Path("/test")
- @Produces(MediaType.APPLICATION_JSON)
- public String test() {
- return "{ " +
- "\"parameter\": \"Hello world!\"" +
- "}";
- }
-}
\ No newline at end of file
diff --git a/src/main/java/com/tibiawiki/serviceinterface/config/JerseyConfig.java b/src/main/java/com/tibiawiki/serviceinterface/config/JerseyConfig.java
index 4f7dc90..b178f5e 100644
--- a/src/main/java/com/tibiawiki/serviceinterface/config/JerseyConfig.java
+++ b/src/main/java/com/tibiawiki/serviceinterface/config/JerseyConfig.java
@@ -1,7 +1,6 @@
package com.tibiawiki.serviceinterface.config;
import com.tibiawiki.serviceinterface.CreaturesResource;
-import com.tibiawiki.serviceinterface.TestResource;
import org.glassfish.jersey.server.ResourceConfig;
import org.springframework.stereotype.Component;
@@ -13,7 +12,6 @@ public JerseyConfig() {
}
private void registerEndpoints() {
- register(TestResource.class);
register(CreaturesResource.class);
}
}