Skip to content

Commit

Permalink
Merge pull request #17 from blackdoor/bugfix/#15_null-ptr
Browse files Browse the repository at this point in the history
Fix #15
  • Loading branch information
nrktkt committed Jun 17, 2016
2 parents 8de25fd + f180ce9 commit 4b37a4a
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 10 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -17,7 +17,7 @@ More info in the [wiki](https://github.com/blackdoor/hate/wiki).
<dependency>
<groupId>black.door</groupId>
<artifactId>hate</artifactId>
<version>v1r3t1</version>
<version>v1r3t2</version>
</dependency>
</dependencies>
```
Expand Down
23 changes: 16 additions & 7 deletions pom.xml
Expand Up @@ -23,7 +23,7 @@

<groupId>black.door</groupId>
<artifactId>hate</artifactId>
<version>v1r3t1</version>
<version>v1r3t2</version>

<developers>
<developer>
Expand All @@ -41,27 +41,35 @@
<version>1.16.6</version>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>black.door</groupId>
<artifactId>blackdoor-lib</artifactId>
<version>v4r3t0</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.1</version>
<version>${jackson.version}</version>
</dependency>

<dependency>
<groupId>com.damnhandy</groupId>
<artifactId>handy-uri-templates</artifactId>
<version>2.1.4</version>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.7.2</version>
<artifactId>jackson-datatype-jdk8</artifactId>
<version>${jackson.version}</version>
</dependency>

<dependency>
<groupId>com.damnhandy</groupId>
<artifactId>handy-uri-templates</artifactId>
<version>2.1.4</version>
</dependency>

<dependency>
Expand Down Expand Up @@ -196,6 +204,7 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jackson.version>2.7.5</jackson.version>
</properties>

</project>
7 changes: 6 additions & 1 deletion src/main/java/black/door/hate/HalLink.java
Expand Up @@ -3,6 +3,7 @@
import com.damnhandy.uri.template.UriTemplate;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.*;

Expand All @@ -21,7 +22,10 @@
public class HalLink implements LinkOrResource{

private @NonNull final String href;

@Getter(AccessLevel.NONE) @JsonProperty
private final Boolean templated;

private final String type;
private final URL deprecation;
private final String name;
Expand Down Expand Up @@ -60,8 +64,9 @@ public Optional<UriTemplate> getHrefAsTemplate(){
return Optional.empty();
}

@JsonIgnore
public boolean isTemplated(){
return templated;
return templated == null ? false : templated;
}

@Override
Expand Down
5 changes: 4 additions & 1 deletion src/main/java/black/door/hate/HalRepresentation.java
Expand Up @@ -9,6 +9,7 @@
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
import com.fasterxml.jackson.datatype.jdk8.Jdk8Module;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import lombok.Getter;
import lombok.SneakyThrows;
Expand Down Expand Up @@ -36,7 +37,9 @@ public class HalRepresentation implements java.io.Serializable {
private static ObjectWriter WRITER;
static {
MAPPER = new ObjectMapper()
.registerModule(new JavaTimeModule());
.findAndRegisterModules()
.registerModule(new JavaTimeModule())
.registerModule(new Jdk8Module());
WRITER = MAPPER.writer();
}

Expand Down
64 changes: 64 additions & 0 deletions src/test/java/black/door/hate/HalLinkTest.java
@@ -0,0 +1,64 @@
package black.door.hate;

import com.damnhandy.uri.template.UriTemplate;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.val;
import org.junit.Test;

import java.net.URI;

import static org.junit.Assert.*;

/**
* Created by nfischer on 6/16/2016.
*/
public class HalLinkTest {

@Test
public void testSerialization(){
val link = HalLink.builder()
.href(UriTemplate.fromTemplate("/~{username}"))
.build();

assertTrue(new ObjectMapper().valueToTree(link).get("templated").asBoolean());
}

@Test
public void testIsTemplated(){
HalLink link = HalLink.builder()
.href(URI.create("/path"))
.build();
assertFalse(link.isTemplated());

link = HalLink.builder()
.href(UriTemplate.fromTemplate("/~{username}"))
.build();
assertTrue(link.isTemplated());
}

@Test
public void testGetHrefAsUri() throws Exception {
HalLink link = HalLink.builder()
.href(URI.create("/path"))
.build();
assertTrue(link.getHrefAsUri().isPresent());

link = HalLink.builder()
.href(UriTemplate.fromTemplate("/~{username}"))
.build();
assertFalse(link.getHrefAsUri().isPresent());
}

@Test
public void testGetHrefAsTemplate() throws Exception {
HalLink link = HalLink.builder()
.href(UriTemplate.fromTemplate("/~{username}"))
.build();
assertTrue(link.getHrefAsTemplate().isPresent());

link = HalLink.builder()
.href(URI.create("/path"))
.build();
assertFalse(link.getHrefAsTemplate().isPresent());
}
}

0 comments on commit 4b37a4a

Please sign in to comment.