[BAEL-13511] - Create jackson-modules parent for all related modules

This commit is contained in:
catalin-burcea
2019-12-19 13:34:50 +02:00
parent 93b79e272d
commit c8f16ee116
291 changed files with 52 additions and 103 deletions
@@ -0,0 +1,29 @@
package com.baeldung.jackson.bidirection;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
public class CustomListDeserializer extends StdDeserializer<List<ItemWithSerializer>> {
private static final long serialVersionUID = 1095767961632979804L;
public CustomListDeserializer() {
this(null);
}
public CustomListDeserializer(final Class<?> vc) {
super(vc);
}
@Override
public List<ItemWithSerializer> deserialize(final JsonParser jsonparser, final DeserializationContext context) throws IOException, JsonProcessingException {
return new ArrayList<ItemWithSerializer>();
}
}
@@ -0,0 +1,32 @@
package com.baeldung.jackson.bidirection;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.std.StdSerializer;
public class CustomListSerializer extends StdSerializer<List<ItemWithSerializer>> {
private static final long serialVersionUID = 3698763098000900856L;
public CustomListSerializer() {
this(null);
}
public CustomListSerializer(final Class<List<ItemWithSerializer>> t) {
super(t);
}
@Override
public void serialize(final List<ItemWithSerializer> items, final JsonGenerator generator, final SerializerProvider provider) throws IOException, JsonProcessingException {
final List<Integer> ids = new ArrayList<Integer>();
for (final ItemWithSerializer item : items) {
ids.add(item.id);
}
generator.writeObject(ids);
}
}
@@ -0,0 +1,17 @@
package com.baeldung.jackson.bidirection;
public class Item {
public int id;
public String itemName;
public User owner;
public Item() {
super();
}
public Item(final int id, final String itemName, final User owner) {
this.id = id;
this.itemName = itemName;
this.owner = owner;
}
}
@@ -0,0 +1,21 @@
package com.baeldung.jackson.bidirection;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class ItemWithIdentity {
public int id;
public String itemName;
public UserWithIdentity owner;
public ItemWithIdentity() {
super();
}
public ItemWithIdentity(final int id, final String itemName, final UserWithIdentity owner) {
this.id = id;
this.itemName = itemName;
this.owner = owner;
}
}
@@ -0,0 +1,17 @@
package com.baeldung.jackson.bidirection;
public class ItemWithIgnore {
public int id;
public String itemName;
public UserWithIgnore owner;
public ItemWithIgnore() {
super();
}
public ItemWithIgnore(final int id, final String itemName, final UserWithIgnore owner) {
this.id = id;
this.itemName = itemName;
this.owner = owner;
}
}
@@ -0,0 +1,21 @@
package com.baeldung.jackson.bidirection;
import com.fasterxml.jackson.annotation.JsonManagedReference;
public class ItemWithRef {
public int id;
public String itemName;
@JsonManagedReference
public UserWithRef owner;
public ItemWithRef() {
super();
}
public ItemWithRef(final int id, final String itemName, final UserWithRef owner) {
this.id = id;
this.itemName = itemName;
this.owner = owner;
}
}
@@ -0,0 +1,17 @@
package com.baeldung.jackson.bidirection;
public class ItemWithSerializer {
public int id;
public String itemName;
public UserWithSerializer owner;
public ItemWithSerializer() {
super();
}
public ItemWithSerializer(final int id, final String itemName, final UserWithSerializer owner) {
this.id = id;
this.itemName = itemName;
this.owner = owner;
}
}
@@ -0,0 +1,26 @@
package com.baeldung.jackson.bidirection;
import com.baeldung.jackson.bidirection.jsonview.Views;
import com.fasterxml.jackson.annotation.JsonView;
public class ItemWithView {
@JsonView(Views.Public.class)
public int id;
@JsonView(Views.Public.class)
public String itemName;
@JsonView(Views.Public.class)
public UserWithView owner;
public ItemWithView() {
super();
}
public ItemWithView(final int id, final String itemName, final UserWithView owner) {
this.id = id;
this.itemName = itemName;
this.owner = owner;
}
}
@@ -0,0 +1,24 @@
package com.baeldung.jackson.bidirection;
import java.util.ArrayList;
import java.util.List;
public class User {
public int id;
public String name;
public List<Item> userItems;
public User() {
super();
}
public User(final int id, final String name) {
this.id = id;
this.name = name;
userItems = new ArrayList<Item>();
}
public void addItem(final Item item) {
userItems.add(item);
}
}
@@ -0,0 +1,28 @@
package com.baeldung.jackson.bidirection;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
public class UserWithIdentity {
public int id;
public String name;
public List<ItemWithIdentity> userItems;
public UserWithIdentity() {
super();
}
public UserWithIdentity(final int id, final String name) {
this.id = id;
this.name = name;
userItems = new ArrayList<ItemWithIdentity>();
}
public void addItem(final ItemWithIdentity item) {
userItems.add(item);
}
}
@@ -0,0 +1,28 @@
package com.baeldung.jackson.bidirection;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
public class UserWithIgnore {
public int id;
public String name;
@JsonIgnore
public List<ItemWithIgnore> userItems;
public UserWithIgnore() {
super();
}
public UserWithIgnore(final int id, final String name) {
this.id = id;
this.name = name;
userItems = new ArrayList<ItemWithIgnore>();
}
public void addItem(final ItemWithIgnore item) {
userItems.add(item);
}
}
@@ -0,0 +1,28 @@
package com.baeldung.jackson.bidirection;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonBackReference;
public class UserWithRef {
public int id;
public String name;
@JsonBackReference
public List<ItemWithRef> userItems;
public UserWithRef() {
super();
}
public UserWithRef(final int id, final String name) {
this.id = id;
this.name = name;
userItems = new ArrayList<ItemWithRef>();
}
public void addItem(final ItemWithRef item) {
userItems.add(item);
}
}
@@ -0,0 +1,30 @@
package com.baeldung.jackson.bidirection;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
public class UserWithSerializer {
public int id;
public String name;
@JsonSerialize(using = CustomListSerializer.class)
@JsonDeserialize(using = CustomListDeserializer.class)
public List<ItemWithSerializer> userItems;
public UserWithSerializer() {
super();
}
public UserWithSerializer(final int id, final String name) {
this.id = id;
this.name = name;
userItems = new ArrayList<ItemWithSerializer>();
}
public void addItem(final ItemWithSerializer item) {
userItems.add(item);
}
}
@@ -0,0 +1,33 @@
package com.baeldung.jackson.bidirection;
import java.util.ArrayList;
import java.util.List;
import com.baeldung.jackson.bidirection.jsonview.Views;
import com.fasterxml.jackson.annotation.JsonView;
public class UserWithView {
@JsonView(Views.Public.class)
public int id;
@JsonView(Views.Public.class)
public String name;
@JsonView(Views.Internal.class)
public List<ItemWithView> userItems;
public UserWithView() {
super();
}
public UserWithView(final int id, final String name) {
this.id = id;
this.name = name;
userItems = new ArrayList<ItemWithView>();
}
public void addItem(final ItemWithView item) {
userItems.add(item);
}
}
@@ -0,0 +1,9 @@
package com.baeldung.jackson.bidirection.jsonview;
public class Views {
public static class Public {
}
public static class Internal extends Public {
}
}
@@ -0,0 +1,30 @@
package com.baeldung.jackson.domain;
public class Person {
private String firstName;
private String lastName;
public Person(String firstName, String lastName) {
super();
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
@@ -0,0 +1,37 @@
package com.baeldung.jackson.format;
import java.util.Date;
import com.baeldung.jackson.domain.Person;
import com.fasterxml.jackson.annotation.JsonFormat;
/**
* @author Jay Sridhar
* @version 1.0
*/
public class User extends Person {
private String firstName;
private String lastName;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd@HH:mm:ss.SSSZ")
private Date createdDate;
public User(String firstName, String lastName) {
super(firstName, lastName);
this.createdDate = new Date();
}
public Date getCreatedDate() {
return createdDate;
}
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd@HH:mm:ss.SSSZ", locale = "en_GB")
public Date getCurrentDate() {
return new Date();
}
@JsonFormat(shape = JsonFormat.Shape.NUMBER)
public Date getDateNum() {
return new Date();
}
}
@@ -0,0 +1,36 @@
package com.baeldung.jackson.jsonview;
import com.fasterxml.jackson.annotation.JsonView;
public class Item {
@JsonView(Views.Public.class)
public int id;
@JsonView(Views.Public.class)
public String itemName;
@JsonView(Views.Internal.class)
public String ownerName;
public Item() {
super();
}
public Item(final int id, final String itemName, final String ownerName) {
this.id = id;
this.itemName = itemName;
this.ownerName = ownerName;
}
public int getId() {
return id;
}
public String getItemName() {
return itemName;
}
public String getOwnerName() {
return ownerName;
}
}
@@ -0,0 +1,22 @@
package com.baeldung.jackson.jsonview;
import java.util.List;
import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
import com.fasterxml.jackson.databind.ser.BeanSerializerModifier;
public class MyBeanSerializerModifier extends BeanSerializerModifier {
@Override
public List<BeanPropertyWriter> changeProperties(final SerializationConfig config, final BeanDescription beanDesc, final List<BeanPropertyWriter> beanProperties) {
for (int i = 0; i < beanProperties.size(); i++) {
final BeanPropertyWriter beanPropertyWriter = beanProperties.get(i);
if (beanPropertyWriter.getName() == "name") {
beanProperties.set(i, new UpperCasingWriter(beanPropertyWriter));
}
}
return beanProperties;
}
}
@@ -0,0 +1,21 @@
package com.baeldung.jackson.jsonview;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;
public class UpperCasingWriter extends BeanPropertyWriter {
final BeanPropertyWriter _writer;
public UpperCasingWriter(final BeanPropertyWriter w) {
super(w);
_writer = w;
}
@Override
public void serializeAsField(final Object bean, final JsonGenerator gen, final SerializerProvider prov) throws Exception {
String value = ((User) bean).name;
value = (value == null) ? "" : value.toUpperCase();
gen.writeStringField("name", value);
}
}
@@ -0,0 +1,27 @@
package com.baeldung.jackson.jsonview;
import com.fasterxml.jackson.annotation.JsonView;
public class User {
public int id;
@JsonView(Views.Public.class)
public String name;
public User() {
super();
}
public User(final int id, final String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
@@ -0,0 +1,9 @@
package com.baeldung.jackson.jsonview;
public class Views {
public static class Public {
}
public static class Internal extends Public {
}
}