// Path: src/main/java/me/hao0/wechat/model/js/Ticket.java
// public class Ticket implements Serializable {
// 
//     private static final long serialVersionUID = 978451551258121101L;
// 
//     /**
//      * 凭证字符串
//      */
//     private String ticket;
// 
//     /**
//      * 凭证类型
//      */
//     private TicketType type;
// 
//     /**
//      * 有效时间(s)
//      */
//     private Integer expire;
// 
//     /**
//      * 过期时刻(ms)
//      */
//     private Long expireAt;
// 
//     public String getTicket() {
//         return ticket;
//     }
// 
//     public void setTicket(String ticket) {
//         this.ticket = ticket;
//     }
// 
//     public TicketType getType() {
//         return type;
//     }
// 
//     public void setType(TicketType type) {
//         this.type = type;
//     }
// 
//     public Integer getExpire() {
//         return expire;
//     }
// 
//     public void setExpire(Integer expire) {
//         this.expire = expire;
//     }
// 
//     public Long getExpireAt() {
//         return expireAt;
//     }
// 
//     public void setExpireAt(Long expireAt) {
//         this.expireAt = expireAt;
//     }
// 
//     @Override
//     public String toString() {
//         return "Ticket{" +
//                 "ticket='" + ticket + '\'' +
//                 ", type=" + type +
//                 ", expire=" + expire +
//                 ", expireAt=" + expireAt +
//                 '}';
//     }
// }
// 
// Path: src/main/java/me/hao0/wechat/model/js/TicketType.java
// public enum TicketType {
// 
//     /**
//      * 用于调用微信JSSDK的临时票据
//      */
//     JSAPI("jsapi"),
// 
//     /**
//      * 用于调用卡券相关接口的临时票据
//      */
//     CARD("wx_card");
// 
//     private String type;
// 
//     private TicketType(String type){
//         this.type = type;
//     }
// 
//     public String type(){
//         return type;
//     }
// }


import com.google.common.base.Strings;
import me.hao0.wechat.model.js.Ticket;
import me.hao0.wechat.model.js.TicketType;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
package me.hao0.wechat.loader;


/**
 * 一个内存式Ticket加载器(生产环境不推荐使用)
 * Author: haolin
 * Email: haolin.h0@gmail.com
 * Date: 15/11/15
 * @since 1.3.0
 */
public class DefaultTicketLoader implements TicketLoader {

    private final Map<TicketType, Ticket> tickets = new ConcurrentHashMap<>();

    @Override
    public String get(TicketType type) {
// Path: src/main/java/me/hao0/wechat/model/js/Ticket.java
// public class Ticket implements Serializable {
// 
//     private static final long serialVersionUID = 978451551258121101L;
// 
//     /**
//      * 凭证字符串
//      */
//     private String ticket;
// 
//     /**
//      * 凭证类型
//      */
//     private TicketType type;
// 
//     /**
//      * 有效时间(s)
//      */
//     private Integer expire;
// 
//     /**
//      * 过期时刻(ms)
//      */
//     private Long expireAt;
// 
//     public String getTicket() {
//         return ticket;
//     }
// 
//     public void setTicket(String ticket) {
//         this.ticket = ticket;
//     }
// 
//     public TicketType getType() {
//         return type;
//     }
// 
//     public void setType(TicketType type) {
//         this.type = type;
//     }
// 
//     public Integer getExpire() {
//         return expire;
//     }
// 
//     public void setExpire(Integer expire) {
//         this.expire = expire;
//     }
// 
//     public Long getExpireAt() {
//         return expireAt;
//     }
// 
//     public void setExpireAt(Long expireAt) {
//         this.expireAt = expireAt;
//     }
// 
//     @Override
//     public String toString() {
//         return "Ticket{" +
//                 "ticket='" + ticket + '\'' +
//                 ", type=" + type +
//                 ", expire=" + expire +
//                 ", expireAt=" + expireAt +
//                 '}';
//     }
// }
// 
// Path: src/main/java/me/hao0/wechat/model/js/TicketType.java
// public enum TicketType {
// 
//     /**
//      * 用于调用微信JSSDK的临时票据
//      */
//     JSAPI("jsapi"),
// 
//     /**
//      * 用于调用卡券相关接口的临时票据
//      */
//     CARD("wx_card");
// 
//     private String type;
// 
//     private TicketType(String type){
//         this.type = type;
//     }
// 
//     public String type(){
//         return type;
//     }
// }


// Path: src/main/java/me/hao0/wechat/loader/DefaultTicketLoader.java
import com.google.common.base.Strings;
import me.hao0.wechat.model.js.Ticket;
import me.hao0.wechat.model.js.TicketType;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

package me.hao0.wechat.loader;


/**
 * 一个内存式Ticket加载器(生产环境不推荐使用)
 * Author: haolin
 * Email: haolin.h0@gmail.com
 * Date: 15/11/15
 * @since 1.3.0
 */
public class DefaultTicketLoader implements TicketLoader {

    private final Map<TicketType, Ticket> tickets = new ConcurrentHashMap<>();

    @Override
    public String get(TicketType type) {
        Ticket t = tickets.get(type);