// Path: rahub-cross-cutting-concerns/src/main/java/net/jotorren/microservices/tx/AbstractEntityCommandJsonSerializer.java
// public abstract class AbstractEntityCommandJsonSerializer<T> implements Serializer<EntityCommand<T>> {
// 
// 	private ObjectMapper jacksonMapper = new ObjectMapper();
// 	
// 	public ObjectMapper getJacksonMapper(){
// 		return jacksonMapper;
// 	}
// 	
// 	@Override
// 	public byte[] write(EntityCommand<T> object) throws SerializationFailedException {
// 		return writeToString(object).getBytes();
// 	}
// 
// 	@Override
// 	public String writeToString(EntityCommand<T> object) throws SerializationFailedException {
// 		try {
// 			return jacksonMapper.writeValueAsString(object);
// 		} catch (JsonProcessingException e) {
// 			throw new SerializationFailedException("Error performing EntityCommand serialization", e);
// 		}
// 	}
// 
// 	@Override
// 	public EntityCommand<T> read(byte[] bytes) throws SerializationFailedException {
// 		return readFromString(new String(bytes));
// 	}
// 
// 	@Override
// 	public abstract EntityCommand<T> readFromString(String chars) throws SerializationFailedException;
// 
// }
// 
// Path: rahub-cross-cutting-concerns/src/main/java/net/jotorren/microservices/tx/EntityCommand.java
// public class EntityCommand<T> implements Serializable{
// 	private static final long serialVersionUID = -3927305961526601453L;
// 
// 	public enum Action {
// 		INSERT, UPDATE, DELETE, QUERY
// 	}
// 
// 	private T entity;
// 	private Action action;
// 	private String transactionId;
// 	private long timestamp;
// 	
// 	public T getEntity() {
// 		return entity;
// 	}
// 
// 	public void setEntity(T entity) {
// 		this.entity = entity;
// 	}
// 
// 	public Action getAction() {
// 		return action;
// 	}
// 
// 	public void setAction(Action action) {
// 		this.action = action;
// 	}
// 
// 	public String getTransactionId() {
// 		return transactionId;
// 	}
// 
// 	public void setTransactionId(String transactionId) {
// 		this.transactionId = transactionId;
// 	}
// 
// 	public long getTimestamp() {
// 		return timestamp;
// 	}
// 
// 	public void setTimestamp(long timestamp) {
// 		this.timestamp = timestamp;
// 	}
// }


import java.io.IOException;
import net.jotorren.microservices.tx.AbstractEntityCommandJsonSerializer;
import net.jotorren.microservices.tx.EntityCommand;
import org.springframework.core.serializer.support.SerializationFailedException;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;
package net.jotorren.microservices.forum.domain;





@Component
public class ForumSerializer extends AbstractEntityCommandJsonSerializer<Forum>{

	@Override
// Path: rahub-cross-cutting-concerns/src/main/java/net/jotorren/microservices/tx/AbstractEntityCommandJsonSerializer.java
// public abstract class AbstractEntityCommandJsonSerializer<T> implements Serializer<EntityCommand<T>> {
// 
// 	private ObjectMapper jacksonMapper = new ObjectMapper();
// 	
// 	public ObjectMapper getJacksonMapper(){
// 		return jacksonMapper;
// 	}
// 	
// 	@Override
// 	public byte[] write(EntityCommand<T> object) throws SerializationFailedException {
// 		return writeToString(object).getBytes();
// 	}
// 
// 	@Override
// 	public String writeToString(EntityCommand<T> object) throws SerializationFailedException {
// 		try {
// 			return jacksonMapper.writeValueAsString(object);
// 		} catch (JsonProcessingException e) {
// 			throw new SerializationFailedException("Error performing EntityCommand serialization", e);
// 		}
// 	}
// 
// 	@Override
// 	public EntityCommand<T> read(byte[] bytes) throws SerializationFailedException {
// 		return readFromString(new String(bytes));
// 	}
// 
// 	@Override
// 	public abstract EntityCommand<T> readFromString(String chars) throws SerializationFailedException;
// 
// }
// 
// Path: rahub-cross-cutting-concerns/src/main/java/net/jotorren/microservices/tx/EntityCommand.java
// public class EntityCommand<T> implements Serializable{
// 	private static final long serialVersionUID = -3927305961526601453L;
// 
// 	public enum Action {
// 		INSERT, UPDATE, DELETE, QUERY
// 	}
// 
// 	private T entity;
// 	private Action action;
// 	private String transactionId;
// 	private long timestamp;
// 	
// 	public T getEntity() {
// 		return entity;
// 	}
// 
// 	public void setEntity(T entity) {
// 		this.entity = entity;
// 	}
// 
// 	public Action getAction() {
// 		return action;
// 	}
// 
// 	public void setAction(Action action) {
// 		this.action = action;
// 	}
// 
// 	public String getTransactionId() {
// 		return transactionId;
// 	}
// 
// 	public void setTransactionId(String transactionId) {
// 		this.transactionId = transactionId;
// 	}
// 
// 	public long getTimestamp() {
// 		return timestamp;
// 	}
// 
// 	public void setTimestamp(long timestamp) {
// 		this.timestamp = timestamp;
// 	}
// }


// Path: rahub-forum-service/src/main/java/net/jotorren/microservices/forum/domain/ForumSerializer.java
import java.io.IOException;
import net.jotorren.microservices.tx.AbstractEntityCommandJsonSerializer;
import net.jotorren.microservices.tx.EntityCommand;
import org.springframework.core.serializer.support.SerializationFailedException;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonNode;

package net.jotorren.microservices.forum.domain;





@Component
public class ForumSerializer extends AbstractEntityCommandJsonSerializer<Forum>{

	@Override
	public EntityCommand<Forum> readFromString(String chars)