Skip to content

Commit

Permalink
#165 - Removed support for Jackson 1.x.
Browse files Browse the repository at this point in the history
  • Loading branch information
odrotbohm committed Mar 21, 2014
1 parent d11bec0 commit 8436e9e
Show file tree
Hide file tree
Showing 20 changed files with 63 additions and 1,052 deletions.
21 changes: 3 additions & 18 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>3.2.7.RELEASE</spring.version>
<logback.version>1.0.13</logback.version>
<jackson1.version>1.9.13</jackson1.version>
<jackson2.version>2.3.0</jackson2.version>
<jackson.version>2.3.0</jackson.version>
<jaxrs.version>1.0</jaxrs.version>
<minidevjson.version>1.1.1</minidevjson.version>
<jsonpath.version>0.9.1</jsonpath.version>
Expand Down Expand Up @@ -135,31 +134,17 @@
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>${jackson1.version}</version>
<optional>true</optional>
</dependency>

<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson1.version}</version>
<optional>true</optional>
</dependency>

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson2.version}</version>
<version>${jackson.version}</version>
<optional>true</optional>
</dependency>

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

Expand Down
3 changes: 0 additions & 3 deletions src/main/java/org/springframework/hateoas/Link.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,6 @@ public Link withSelfRel() {
*
* @return
*/
@org.codehaus.jackson.annotate.JsonIgnore
@JsonIgnore
public List<String> getVariableNames() {
return getUriTemplate().getVariableNames();
Expand All @@ -152,7 +151,6 @@ public List<String> getVariableNames() {
*
* @return
*/
@org.codehaus.jackson.annotate.JsonIgnore
@JsonIgnore
public List<TemplateVariable> getVariables() {
return getUriTemplate().getVariables();
Expand All @@ -163,7 +161,6 @@ public List<TemplateVariable> getVariables() {
*
* @return
*/
@org.codehaus.jackson.annotate.JsonIgnore
public boolean isTemplated() {
return !getUriTemplate().getVariables().isEmpty();
}
Expand Down
35 changes: 10 additions & 25 deletions src/main/java/org/springframework/hateoas/PagedResources.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@

import org.springframework.util.Assert;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
* DTO to implement binding response representations of pageable collections.
*
Expand Down Expand Up @@ -71,8 +74,7 @@ public PagedResources(Collection<T> content, PageMetadata metadata, Iterable<Lin
*
* @return the metadata
*/
@org.codehaus.jackson.annotate.JsonProperty("page")
@com.fasterxml.jackson.annotation.JsonProperty("page")
@JsonProperty("page")
public PageMetadata getMetadata() {
return metadata;
}
Expand Down Expand Up @@ -103,8 +105,7 @@ public static <T extends Resource<S>, S> PagedResources<T> wrap(Iterable<S> cont
* @see #addPaginationLinks(Link)
* @return
*/
@com.fasterxml.jackson.annotation.JsonIgnore
@org.codehaus.jackson.annotate.JsonIgnore
@JsonIgnore
public Link getNextLink() {
return getLink(Link.REL_NEXT);
}
Expand All @@ -115,8 +116,7 @@ public Link getNextLink() {
* @see #addPaginationLinks(Link)
* @return
*/
@com.fasterxml.jackson.annotation.JsonIgnore
@org.codehaus.jackson.annotate.JsonIgnore
@JsonIgnore
public Link getPreviousLink() {
return getLink(Link.REL_PREVIOUS);
}
Expand Down Expand Up @@ -170,25 +170,10 @@ public int hashCode() {
*/
public static class PageMetadata {

@XmlAttribute//
@org.codehaus.jackson.annotate.JsonProperty//
@com.fasterxml.jackson.annotation.JsonProperty//
private long size;

@XmlAttribute//
@org.codehaus.jackson.annotate.JsonProperty//
@com.fasterxml.jackson.annotation.JsonProperty//
private long totalElements;

@XmlAttribute//
@org.codehaus.jackson.annotate.JsonProperty//
@com.fasterxml.jackson.annotation.JsonProperty//
private long totalPages;

@XmlAttribute//
@org.codehaus.jackson.annotate.JsonProperty//
@com.fasterxml.jackson.annotation.JsonProperty//
private long number;
@XmlAttribute @JsonProperty private long size;
@XmlAttribute @JsonProperty private long totalElements;
@XmlAttribute @JsonProperty private long totalPages;
@XmlAttribute @JsonProperty private long number;

protected PageMetadata() {

Expand Down
5 changes: 3 additions & 2 deletions src/main/java/org/springframework/hateoas/Resource.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@

import org.springframework.util.Assert;

import com.fasterxml.jackson.annotation.JsonUnwrapped;

/**
* A simple {@link Resource} wrapping a domain object and adding links to it.
*
Expand Down Expand Up @@ -69,8 +71,7 @@ public Resource(T content, Iterable<Link> links) {
*
* @return the content
*/
@org.codehaus.jackson.annotate.JsonUnwrapped
@com.fasterxml.jackson.annotation.JsonUnwrapped
@JsonUnwrapped
@XmlAnyElement
public T getContent() {
return content;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@

import org.springframework.util.Assert;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;

/**
* Base class for DTOs to collect links.
*
Expand All @@ -38,8 +41,7 @@ public ResourceSupport() {
/**
* Returns the {@link Link} with a rel of {@link Link#REL_SELF}.
*/
@org.codehaus.jackson.annotate.JsonIgnore
@com.fasterxml.jackson.annotation.JsonIgnore
@JsonIgnore
public Link getId() {
return getLink(Link.REL_SELF);
}
Expand Down Expand Up @@ -91,8 +93,7 @@ public boolean hasLink(String rel) {
* @return
*/
@XmlElement(name = "link", namespace = Link.ATOM_NAMESPACE)
@org.codehaus.jackson.annotate.JsonProperty("links")
@com.fasterxml.jackson.annotation.JsonProperty("links")
@JsonProperty("links")
public List<Link> getLinks() {
return links;
}
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/org/springframework/hateoas/Resources.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@

import org.springframework.util.Assert;

import com.fasterxml.jackson.annotation.JsonProperty;

/**
* General helper to easily create a wrapper for a collection of entities.
*
Expand Down Expand Up @@ -98,8 +100,7 @@ public static <T extends Resource<S>, S> Resources<T> wrap(Iterable<S> content)
*/
@XmlAnyElement
@XmlElementWrapper
@org.codehaus.jackson.annotate.JsonProperty("content")
@com.fasterxml.jackson.annotation.JsonProperty("content")
@JsonProperty("content")
public Collection<T> getContent() {
return Collections.unmodifiableCollection(content);
}
Expand Down
21 changes: 8 additions & 13 deletions src/main/java/org/springframework/hateoas/VndErrors.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonValue;

/**
* A representation model class to be rendered as specified for the media type {@code application/vnd.error}.
*
Expand Down Expand Up @@ -72,8 +76,7 @@ public VndErrors(VndError error, VndError... errors) {
*
* @param errors must not be {@literal null} or empty.
*/
@com.fasterxml.jackson.annotation.JsonCreator
@org.codehaus.jackson.annotate.JsonCreator
@JsonCreator
public VndErrors(List<VndError> errors) {

Assert.notNull(errors, "Errors must not be null!");
Expand Down Expand Up @@ -103,8 +106,7 @@ public VndErrors add(VndError error) {
*
* @return the vndErrors
*/
@com.fasterxml.jackson.annotation.JsonValue
@org.codehaus.jackson.annotate.JsonValue
@JsonValue
private List<VndError> getErrors() {
return vndErrors;
}
Expand Down Expand Up @@ -163,15 +165,8 @@ public boolean equals(Object obj) {
@XmlType
public static class VndError extends ResourceSupport {

@com.fasterxml.jackson.annotation.JsonProperty//
@org.codehaus.jackson.annotate.JsonProperty//
@XmlAttribute//
private final String logref;

@com.fasterxml.jackson.annotation.JsonProperty//
@org.codehaus.jackson.annotate.JsonProperty//
@XmlElement//
private final String message;
@XmlAttribute @JsonProperty private final String logref;
@XmlElement @JsonProperty private final String message;

/**
* Creates a new {@link VndError} with the given logref, a message as well as some {@link Link}s.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,9 @@
import org.springframework.hateoas.core.EvoInflectorRelProvider;
import org.springframework.hateoas.hal.CurieProvider;
import org.springframework.hateoas.hal.HalLinkDiscoverer;
import org.springframework.hateoas.hal.Jackson1HalModule;
import org.springframework.hateoas.hal.Jackson2HalModule;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.http.converter.json.MappingJacksonHttpMessageConverter;
import org.springframework.plugin.core.PluginRegistry;
import org.springframework.plugin.core.support.PluginRegistryFactoryBean;
import org.springframework.util.ClassUtils;
Expand All @@ -78,7 +76,6 @@ class HypermediaSupportBeanDefinitionRegistrar implements ImportBeanDefinitionRe
private static final String LINK_DISCOVERER_REGISTRY_BEAN_NAME = "_linkDiscovererRegistry";
private static final String HAL_OBJECT_MAPPER_BEAN_NAME = "_halObjectMapper";

private static final boolean JACKSON1_PRESENT = ClassUtils.isPresent("org.codehaus.jackson.map.ObjectMapper", null);
private static final boolean JACKSON2_PRESENT = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper",
null);
private static final boolean JSONPATH_PRESENT = ClassUtils.isPresent("com.jayway.jsonpath.JsonPath", null);
Expand Down Expand Up @@ -119,11 +116,6 @@ public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionR
BeanDefinitionBuilder builder = rootBeanDefinition(Jackson2ModuleRegisteringBeanPostProcessor.class);
registerSourcedBeanDefinition(builder, metadata, registry);
}

if (JACKSON1_PRESENT) {
BeanDefinitionBuilder builder = rootBeanDefinition(Jackson1ModuleRegisteringBeanPostProcessor.class);
registerSourcedBeanDefinition(builder, metadata, registry);
}
}

if (!types.isEmpty()) {
Expand Down Expand Up @@ -306,76 +298,4 @@ private static CurieProvider getCurieProvider(BeanFactory factory) {
}
}
}

/**
* {@link BeanPostProcessor} to register the {@link Jackson1HalModule} with
* {@link org.codehaus.jackson.map.ObjectMapper} beans registered in the {@link ApplicationContext}.
*
* @author Oliver Gierke
*/
@Deprecated
private static class Jackson1ModuleRegisteringBeanPostProcessor implements BeanPostProcessor, BeanFactoryAware {

private RelProvider relProvider;

/*
* (non-Javadoc)
* @see org.springframework.beans.factory.BeanFactoryAware#setBeanFactory(org.springframework.beans.factory.BeanFactory)
*/
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.relProvider = beanFactory.getBean(DELEGATING_REL_PROVIDER_BEAN_NAME, RelProvider.class);
}

/*
* (non-Javadoc)
* @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization(java.lang.Object, java.lang.String)
*/
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {

if (bean instanceof RequestMappingHandlerAdapter) {

RequestMappingHandlerAdapter adapter = (RequestMappingHandlerAdapter) bean;
adapter.setMessageConverters(registerModule(adapter.getMessageConverters()));
}

if (bean instanceof AnnotationMethodHandlerAdapter) {

AnnotationMethodHandlerAdapter adapter = (AnnotationMethodHandlerAdapter) bean;
List<HttpMessageConverter<?>> augmentedConverters = registerModule(Arrays
.asList(adapter.getMessageConverters()));
adapter
.setMessageConverters(augmentedConverters.toArray(new HttpMessageConverter<?>[augmentedConverters.size()]));
}

return bean;
}

/*
* (non-Javadoc)
* @see org.springframework.beans.factory.config.BeanPostProcessor#postProcessAfterInitialization(java.lang.Object, java.lang.String)
*/
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}

private List<HttpMessageConverter<?>> registerModule(List<HttpMessageConverter<?>> converters) {

org.codehaus.jackson.map.ObjectMapper objectMapper = new org.codehaus.jackson.map.ObjectMapper();

objectMapper.registerModule(new Jackson1HalModule());
objectMapper.setHandlerInstantiator(new Jackson1HalModule.HalHandlerInstantiator(relProvider));

MappingJacksonHttpMessageConverter halConverter = new MappingJacksonHttpMessageConverter();
halConverter.setSupportedMediaTypes(Arrays.asList(HAL_JSON));
halConverter.setObjectMapper(objectMapper);

List<HttpMessageConverter<?>> result = new ArrayList<HttpMessageConverter<?>>(converters.size());
result.add(halConverter);
result.addAll(converters);
return result;
}
}
}
Loading

0 comments on commit 8436e9e

Please sign in to comment.