package org.ovirt.engine.core.utils.serialization.json;
import java.io.Serializable;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.utils.RandomUtils;
/**
* This POJO can be serialized & deserialized by Jackson, and is used to test the jacson serialization & deserialization
* classes.
*/
@SuppressWarnings("serial")
public class JsonSerializablePojo implements Serializable {
/* --- Fields for serialization --- */
public Integer integer;
protected Guid guid;
private String string;
private Object object;
/* --- Constructors --- */
/**
* Construct a new POJO initialized with random values.
*/
public JsonSerializablePojo() {
integer = RandomUtils.instance().nextInt();
setGuid(Guid.NewGuid());
setString(RandomUtils.instance().nextString(100, 100000));
setObject(Guid.NewGuid());
}
/* --- Setters & Getters --- */
/**
* @return the guid
*/
public Guid getGuid() {
return guid;
}
/**
* @param guid
* the guid to set
*/
public void setGuid(Guid guid) {
this.guid = guid;
}
/**
* @return the string
*/
public String getString() {
return string;
}
/**
* @param string
* the string to set
*/
public void setString(String string) {
this.string = string;
}
/**
* @return the object
*/
public Object getObject() {
return object;
}
/**
* @param object
* the object to set
*/
public void setObject(Object object) {
this.object = object;
}
/* --- Json helper methods --- */
/**
* Turns this POJO instance into a JSON form of string.
*
* @param stripSpaces
* Should the string (field) strip all spaces or not.
* @return The {@link String} which has the JSON representation of the POJO instance.
*/
public String toJsonForm(boolean stripSpaces) {
StringBuilder sb = new StringBuilder();
sb.append("{\"integer\":");
sb.append(integer);
sb.append(",\"object\":[\"");
sb.append(getObject().getClass().getName());
sb.append("\",{\"uuid\":\"");
sb.append(getObject().toString());
sb.append("\"}],\"string\":\"");
String string = getString().replace("\\", "\\\\").replace("\"", "\\\"");
sb.append((stripSpaces ? string.replaceAll("\\s", "") : string));
sb.append("\",\"guid\":[\"");
sb.append(getGuid().getClass().getName());
sb.append("\",{\"uuid\":\"");
sb.append(getGuid().toString());
sb.append("\"}]}");
return sb.toString();
}
/* --- Equals & hashcode implementation --- */
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((guid == null) ? 0 : guid.hashCode());
result = prime * result + ((integer == null) ? 0 : integer.hashCode());
result = prime * result + ((object == null) ? 0 : object.hashCode());
result = prime * result + ((string == null) ? 0 : string.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
JsonSerializablePojo other = (JsonSerializablePojo) obj;
if (guid == null) {
if (other.guid != null) {
return false;
}
} else if (!guid.equals(other.guid)) {
return false;
}
if (integer == null) {
if (other.integer != null) {
return false;
}
} else if (!integer.equals(other.integer)) {
return false;
}
if (object == null) {
if (other.object != null) {
return false;
}
} else if (!object.equals(other.object)) {
return false;
}
if (string == null) {
if (other.string != null) {
return false;
}
} else if (!string.equals(other.string)) {
return false;
}
return true;
}
}