// Path: source/src/main/java/com/javabaas/callback/FileUploadCallback.java
// public interface FileUploadCallback {
//     void done(JBFile jbFile);
//     void error(JBException e);
//     void onProgress(double percent);
// }
// 
// Path: source/src/main/java/com/javabaas/callback/ResponseListener.java
// public interface ResponseListener<T> {
//     void onResponse(T entity);
// 
//     void onError(JBException e);
// }
// 
// Path: source/src/main/java/com/javabaas/exception/JBException.java
// public class JBException extends Exception {
//     /**
//      * 认证失败
//      */
//     public static int AUTH_FAILURE_ERROR = 1;
// 
//     /**
//      * 网络错误
//      */
//     public static int NETWORK_ERROR = 2;
// 
//     /**
//      * 解析错误
//      */
//     public static int PARSE_ERROR = 3;
// 
//     /**
//      * 服务器错误
//      */
//     public static int SERVER_ERROR = 4;
// 
//     /**
//      * 云方法错误
//      */
//     public static int CLOUD_ERROR = 5;
// 
//     /**
//      * 上传错误
//      */
//     public static int UPLOAD_ERROR = 6;
// 
//     //responseErrorCode
//     public static int SESSION_TOKEN_ERROR_CODE = 1310;
// 
//     public int errorCode;
//     public int responseErrorCode;
//     public String responseErrorMsg;
// 
//     public JBException() {
//     }
// 
//     public JBException(String detailMessage) {
//         super(detailMessage);
//     }
// 
//     public JBException(int errorCode , String detailMessage) {
//         super(detailMessage);
//         this.errorCode = errorCode;
//     }
// 
//     public int getErrorCode() {
//         return errorCode;
//     }
// 
//     public int getResponseErrorCode() {
//         return responseErrorCode;
//     }
// 
//     public String getResponseErrorMsg() {
//         return responseErrorMsg;
//     }
// }


import java.io.File;
import com.javabaas.callback.FileUploadCallback;
import com.javabaas.callback.ResponseListener;
import com.javabaas.exception.JBException;
    }

    public JBFile(byte[] bytes) {
        this.data = bytes;
    }

    public static JBFile createWithoutData(String id){
        JBFile jbObject = new JBFile();
        jbObject.setId(id);
        return jbObject;
    }

    public File getFile(){
        return file;
    }

    @Override
    public String getClassName() {
        return className;
    }

    public void saveInBackground(final FileUploadCallback callback) {
        getUploadToken(new ResponseListener<CustomResponse>() {
            @Override
            public void onResponse(CustomResponse entity) {
                if (uploader != null)
                    uploader.upload(entity ,JBFile.this,callback);
            }

            @Override
// Path: source/src/main/java/com/javabaas/callback/FileUploadCallback.java
// public interface FileUploadCallback {
//     void done(JBFile jbFile);
//     void error(JBException e);
//     void onProgress(double percent);
// }
// 
// Path: source/src/main/java/com/javabaas/callback/ResponseListener.java
// public interface ResponseListener<T> {
//     void onResponse(T entity);
// 
//     void onError(JBException e);
// }
// 
// Path: source/src/main/java/com/javabaas/exception/JBException.java
// public class JBException extends Exception {
//     /**
//      * 认证失败
//      */
//     public static int AUTH_FAILURE_ERROR = 1;
// 
//     /**
//      * 网络错误
//      */
//     public static int NETWORK_ERROR = 2;
// 
//     /**
//      * 解析错误
//      */
//     public static int PARSE_ERROR = 3;
// 
//     /**
//      * 服务器错误
//      */
//     public static int SERVER_ERROR = 4;
// 
//     /**
//      * 云方法错误
//      */
//     public static int CLOUD_ERROR = 5;
// 
//     /**
//      * 上传错误
//      */
//     public static int UPLOAD_ERROR = 6;
// 
//     //responseErrorCode
//     public static int SESSION_TOKEN_ERROR_CODE = 1310;
// 
//     public int errorCode;
//     public int responseErrorCode;
//     public String responseErrorMsg;
// 
//     public JBException() {
//     }
// 
//     public JBException(String detailMessage) {
//         super(detailMessage);
//     }
// 
//     public JBException(int errorCode , String detailMessage) {
//         super(detailMessage);
//         this.errorCode = errorCode;
//     }
// 
//     public int getErrorCode() {
//         return errorCode;
//     }
// 
//     public int getResponseErrorCode() {
//         return responseErrorCode;
//     }
// 
//     public String getResponseErrorMsg() {
//         return responseErrorMsg;
//     }
// }


// Path: source/src/main/java/com/javabaas/JBFile.java
import java.io.File;
import com.javabaas.callback.FileUploadCallback;
import com.javabaas.callback.ResponseListener;
import com.javabaas.exception.JBException;

    }

    public JBFile(byte[] bytes) {
        this.data = bytes;
    }

    public static JBFile createWithoutData(String id){
        JBFile jbObject = new JBFile();
        jbObject.setId(id);
        return jbObject;
    }

    public File getFile(){
        return file;
    }

    @Override
    public String getClassName() {
        return className;
    }

    public void saveInBackground(final FileUploadCallback callback) {
        getUploadToken(new ResponseListener<CustomResponse>() {
            @Override
            public void onResponse(CustomResponse entity) {
                if (uploader != null)
                    uploader.upload(entity ,JBFile.this,callback);
            }

            @Override
            public void onError(JBException e) {