Skip to content

Commit

Permalink
simplified instansiating object methods in 'as'-methods
Browse files Browse the repository at this point in the history
  • Loading branch information
tajakobsen committed Aug 27, 2015
1 parent b4fecbf commit fd74e13
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 9 deletions.
4 changes: 2 additions & 2 deletions src/main/java/com/nerdforge/unxml/parsers/ArrayParser.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ public ArrayNode apply(Node node) {
* Returns the parsed result as a List of Objects of class A
* @return Result as a List of Objects
*/
public <A> Function<Node, List<A>> as(Class<A> valueType) {
return this.andThen(jsonUtil.asList(valueType));
public <A> ListParser<A> as(Class<A> valueType){
return this.<List<A>>andThen(jsonUtil.asList(valueType))::apply;
}

private Collector<JsonNode, ArrayNode, ArrayNode> toArrayNode(){
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/com/nerdforge/unxml/parsers/InstanceParser.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.nerdforge.unxml.parsers;

import org.w3c.dom.Node;
import java.util.function.Function;

public interface InstanceParser<A> extends Function<Node, A>{}
5 changes: 1 addition & 4 deletions src/main/java/com/nerdforge/unxml/parsers/ListParser.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package com.nerdforge.unxml.parsers;

import org.w3c.dom.Node;

import java.util.List;
import java.util.function.Function;

public interface ListParser<A> extends Function<Node, List<A>> {}
public interface ListParser<V> extends InstanceParser<List<V>> {}
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.nerdforge.unxml.parsers.builders;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.collect.Maps;
import com.google.inject.Inject;
import com.nerdforge.unxml.factory.ObjectParserFactory;
import com.nerdforge.unxml.json.JsonUtil;
import com.nerdforge.unxml.parsers.InstanceParser;
import com.nerdforge.unxml.parsers.Parser;
import com.nerdforge.unxml.parsers.ObjectParser;
import com.nerdforge.unxml.parsers.SimpleParsers;
Expand Down Expand Up @@ -96,8 +98,8 @@ public ObjectParser build(){
* Returns some Json utility methods
* @return An instance of JsonUtil
*/
public <A> Function<Node, A> as(Class<A> valueType){
return build().andThen(jsonUtil.as(valueType));
public <A> InstanceParser<A> as(Class<A> valueType) {
return build().<A>andThen(jsonUtil.as(valueType))::apply;
}

private Map<String, Parser<?>> wrapAttributes(String path){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,8 @@ public void testParseArrayWithObjects() {
assertThat(node.at("/0/title").asText()).isEqualTo("mytitle");

// Make an object
List<Article> articles = parser.as(Article.class).apply(input);
ListParser<Article> articleListParser = parser.as(Article.class);
List<Article> articles = articleListParser.apply(input);

assertThat(articles).hasSize(2);
assertThat(articles.get(0).id).isEqualTo(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
import org.junit.BeforeClass;
import org.junit.Test;
import org.w3c.dom.Document;

import java.util.function.Function;

import static org.fest.assertions.Assertions.*;

public class SimpleParsersTest {
Expand Down

0 comments on commit fd74e13

Please sign in to comment.