/** * Dianping.com Inc. * Copyright (c) 2003-2013 All Rights Reserved. */ package com.dianping.pigeon.remoting.common.domain; import java.io.Serializable; import java.util.Map; import com.dianping.pigeon.remoting.common.util.Constants; import com.fasterxml.jackson.annotation.JsonIdentityInfo; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.ObjectIdGenerators; @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "seq", scope = DefaultResponse.class) public class DefaultResponse implements InvocationResponse { /** * 不能随意修改! */ private static final long serialVersionUID = 4200559704846455821L; private transient byte serialize; @JsonProperty("seq") private long seq; private int messageType; @JsonProperty("exception") private String cause; @JsonProperty("response") @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class") private Object returnVal; @JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, include = JsonTypeInfo.As.PROPERTY, property = "@class") private Object context; @JsonIgnore private transient int size; @JsonIgnore private transient long createMillisTime; private Map<String, Serializable> responseValues = null; public DefaultResponse() { } public DefaultResponse(int messageType, byte serialize) { this.messageType = messageType; this.serialize = serialize; } public DefaultResponse(byte serialize, long seq, int messageType, Object returnVal) { this.serialize = serialize; this.seq = seq; this.messageType = messageType; this.returnVal = returnVal; } public DefaultResponse(byte serialize, long seq, int messageType, Object returnVal, String cause) { this.serialize = serialize; this.seq = seq; this.messageType = messageType; this.returnVal = returnVal; this.cause = cause; } /* * (non-Javadoc) * * @see com.dianping.dpsf.net.component.DPSFSerializable#getSerializ() */ public byte getSerialize() { return this.serialize; } /* * (non-Javadoc) * * @see com.dianping.dpsf.net.component.DPSFSerializable#setSequence(long) */ public void setSequence(long seq) { this.seq = seq; } /* * (non-Javadoc) * * @see com.dianping.dpsf.net.component.DPSFSerializable#getSequence() */ public long getSequence() { return this.seq; } /* * (non-Javadoc) * * @see com.dianping.dpsf.net.component.DPSFSerializable#getObject() */ public Object getObject() { return this; } /* * (non-Javadoc) * * @see com.dianping.dpsf.net.component.DPSFResponse#setMessageType(int) */ public void setMessageType(int messageType) { this.messageType = messageType; } /* * (non-Javadoc) * * @see com.dianping.dpsf.net.component.DPSFResponse#getMessageType() */ public int getMessageType() { return this.messageType; } /* * (non-Javadoc) * * @see com.dianping.dpsf.component.DPSFResponse#getCause() */ public String getCause() { return this.cause; } /* * (non-Javadoc) * * @see com.dianping.dpsf.component.DPSFResponse#getReturn() */ public Object getReturn() { return this.returnVal; } /* * (non-Javadoc) * * @see com.dianping.dpsf.component.DPSFSerializable#getContext() */ @Override public Object getContext() { return this.context; } /* * (non-Javadoc) * * @see * com.dianping.dpsf.component.DPSFSerializable#setContext(java.lang.Object) */ @Override public void setContext(Object context) { this.context = context; } /* * (non-Javadoc) * * @see com.dianping.dpsf.component.DPSFResponse#setReturn(java.lang.Object) */ @Override public void setReturn(Object obj) { this.returnVal = obj; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("DefaultResponse[").append("[serialize=").append(serialize).append(", seq=").append(seq). append(", messageType=").append(messageType); if (!(this.messageType == Constants.MESSAGE_TYPE_SERVICE)) { builder.append(", return=").append(returnVal); } builder.append("]"); return builder.toString(); } @Override public void setSerialize(byte serialize) { this.serialize = serialize; } public int getSize() { return size; } public void setSize(int size) { this.size = size; } public Map<String, Serializable> getResponseValues() { return responseValues; } public void setResponseValues(Map<String, Serializable> responseValues) { this.responseValues = responseValues; } public long getCreateMillisTime() { return createMillisTime; } public void setCreateMillisTime(long createMillisTime) { this.createMillisTime = createMillisTime; } }