Mix-ins added for Jackson Serialization/deserialization

Fixes gh-434
This commit is contained in:
Jitendra Singh Bisht
2016-03-17 10:27:32 +05:30
committed by Rob Winch
parent d3379029bb
commit 8b97a32db2
34 changed files with 8570 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
package sample.mixins;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.User;
import java.io.IOException;
import java.util.Set;
import static sample.utils.JsonNodeExtractor.*;
/**
* @author jitendra on 14/3/16.
*/
public class UserDeserializer extends JsonDeserializer<User> {
@Override
public User deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
ObjectMapper mapper = (ObjectMapper) p.getCodec();
JsonNode jsonNode = mapper.readTree(p);
Set<GrantedAuthority> authorities = mapper.readValue(jsonNode.get("authorities").toString(), new TypeReference<Set<GrantedAuthority>>() {});
return new User(
getStringValue(jsonNode, "username"),
getStringValue(jsonNode, "password", ""),
getBooleanValue(jsonNode, "enabled"),
getBooleanValue(jsonNode, "accountNonExpired"),
getBooleanValue(jsonNode, "credentialsNonExpired"),
getBooleanValue(jsonNode, "accountNonLocked"),
authorities
);
}
}