content: /*
   *  Copyright Beijing 58 Information Technology Co.,Ltd.
   *
   *  Licensed to the Apache Software Foundation (ASF) under one
   *  or more contributor license agreements.  See the NOTICE file
   *  distributed with this work for additional information
   *  regarding copyright ownership.  The ASF licenses this file
   *  to you under the Apache License, Version 2.0 (the
   *  "License"); you may not use this file except in compliance
   *  with the License.  You may obtain a copy of the License at
   *
   *        http://www.apache.org/licenses/LICENSE-2.0
   *
   *  Unless required by applicable law or agreed to in writing,
   *  software distributed under the License is distributed on an
   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
   *  KIND, either express or implied.  See the License for the
   *  specific language governing permissions and limitations
   *  under the License.
   */
  package com.bj58.spat.gaea.server.util;
  
  import java.io.Serializable;
  
  import com.bj58.spat.gaea.protocol.sdp.RequestProtocol;
  import com.bj58.spat.gaea.protocol.utility.KeyValuePair;
  
  /**
   * service frame exception use in proxy and proxyhandle
   * 
   * @author Service Platform Architecture Team (spat@58.com)
   */
  @SuppressWarnings("serial")
  public class ServiceFrameException extends Exception implements Serializable {
  
  	private ErrorState state;
  	
  	private String errorMsg;
  	
  	private String fromIP;
  	
  	private String toIP;
  	
  	private Object sdp;
  	
  	
  	/**
  	 * create exception
  	 * @param errorMsg
  	 * @param fromIP
  	 * @param toIP
  	 * @param mb
  	 * @param state
  	 * @param cause
  	 */
  	public ServiceFrameException(String errorMsg, 
  									String fromIP, 
  									String toIP, 
  									Object sdp, 
  									ErrorState state, 
  									Throwable cause){
          super(errorMsg,cause);
          this.setState(state);
          this.setErrorMsg(errorMsg);
          this.setFromIP(fromIP);
          this.setToIP(toIP);
          this.setSdp(sdp);
      }
  
  	public ServiceFrameException(String errorMsg, ErrorState state, Throwable cause){
          this(errorMsg, "", "", null, state, cause);
      }
  	
  	public ServiceFrameException(String errorMsg, ErrorState state){
  		this(errorMsg, "", "", null, state, null);
      }
  	
  	public ServiceFrameException(ErrorState state, Throwable cause){
  		this("", "", "", null, state, cause);
      }
  	
  	public ServiceFrameException(ErrorState state){
  		this("", "", "", null, state, null);
      }
  	
  	@Override
  	public void printStackTrace() {
  		System.out.println("-------------------------begin-----------------------------");
  		System.out.println("fromIP:" + this.getFromIP());
  		System.out.println("toIP:" + this.getToIP());
  		System.out.println("state:" + this.getState().toString());
  		System.out.println("errorMsg:" + this.getErrorMsg());
  		System.out.println("MessageBodyBase:");
  		
  		if(sdp.getClass() == RequestProtocol.class) {
  			RequestProtocol request = (RequestProtocol)this.sdp;
  			System.out.println("Server.Lookup:" + request.getLookup());
  			System.out.println("Server.MethodName:" + request.getMethodName());
  			System.out.println("Server.ParaKVList:");
  			for(KeyValuePair kv : request.getParaKVList()){
  				System.out.println("key:" + kv.getKey() + "---value:"+kv.getValue());
  			}
  		}
          super.printStackTrace();
          System.out.println("--------------------------end------------------------------");
      }
  	
  
  	public void setState(ErrorState state) {
  		this.state = state;
  	}
  
  	public ErrorState getState() {
  		return state;
  	}
  
  	public String getFromIP() {
  		return fromIP;
  	}
  
  	public void setFromIP(String fromIP) {
  		this.fromIP = fromIP;
  	}
  
  	public String getToIP() {
  		return toIP;
  	}
  
  	public void setToIP(String toIP) {
  		this.toIP = toIP;
  	}
  
  	public void setErrorMsg(String errorMsg) {
  		this.errorMsg = errorMsg;
  	}
  
  	public String getErrorMsg() {
  		return errorMsg;
  	}
  
  	public Object getSdp() {
  		return sdp;
  	}
  
  	public void setSdp(Object sdp) {
  		this.sdp = sdp;
  	}
  }