// Path: summer-core/src/main/java/org/smartx/summer/bean/XUserAgent.java
// public class XUserAgent {
//     private Integer ver;
// 
//     private String caller;
// 
//     private String ch;
// 
//     private String mac;
// 
//     private String os;
// 
//     private String platform;
// 
//     public Integer getVer() {
//         return ver;
//     }
// 
//     public void setVer(Integer ver) {
//         this.ver = ver;
//     }
// 
//     public String getCaller() {
//         return caller;
//     }
// 
//     public void setCaller(String caller) {
//         this.caller = caller;
//     }
// 
//     public String getCh() {
//         return ch;
//     }
// 
//     public void setCh(String ch) {
//         this.ch = ch;
//     }
// 
//     public String getMac() {
//         return mac;
//     }
// 
//     public void setMac(String mac) {
//         this.mac = mac;
//     }
// 
//     public String getOs() {
//         return os;
//     }
// 
//     public void setOs(String os) {
//         this.os = os;
//     }
// 
//     public String getPlatform() {
//         return platform;
//     }
// 
//     public void setPlatform(String platform) {
//         this.platform = platform;
//     }
// 
//     @Override
//     public String toString() {
//         return "ver=" + ver +
//                 "; caller=" + caller +
//                 "; ch=" + ch +
//                 "; mac=" + mac +
//                 "; os=" + os +
//                 "; platform=" + platform;
//     }
// 
//     public static class Builder {
//         private XUserAgent xUserAgent;
// 
//         private Builder(XUserAgent xUserAgent) {
//             this.xUserAgent = xUserAgent;
//         }
// 
//         public static Builder empty() {
//             return new Builder(new XUserAgent());
//         }
// 
//         public Builder ver(Integer ver) {
//             xUserAgent.setVer(ver);
//             return this;
//         }
// 
//         public Builder ver(String ver) {
//             xUserAgent.setVer(Integer.valueOf(ver));
//             return this;
//         }
// 
//         public Builder platform(String platform) {
//             xUserAgent.setPlatform(platform);
//             return this;
//         }
// 
//         public Builder caller(String caller) {
//             xUserAgent.setCaller(caller);
//             return this;
//         }
// 
//         public Builder ch(String ch) {
//             xUserAgent.setCh(ch);
//             return this;
//         }
// 
//         public Builder mac(String mac) {
//             xUserAgent.setMac(mac);
//             return this;
//         }
// 
//         public Builder os(String os) {
//             xUserAgent.setOs(os);
//             return this;
//         }
//     }
// }


import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.smartx.summer.bean.XUserAgent;
import org.springframework.format.Formatter;
import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Locale;
import java.util.stream.Stream;
package org.smartx.summer.formatter;



/**
 * <p> 默认处理x-user-agent header的formatter </p>
 *
 * <b>Creation Time:</b> 2016年11月1日
 *
 * @author binglin
 * @since summer 0.1
 */
public class DefaultXUserAgentHeaderFormatter implements Formatter<XUserAgent> {

    private static final int LENGTH = 2;

    @Override
// Path: summer-core/src/main/java/org/smartx/summer/bean/XUserAgent.java
// public class XUserAgent {
//     private Integer ver;
// 
//     private String caller;
// 
//     private String ch;
// 
//     private String mac;
// 
//     private String os;
// 
//     private String platform;
// 
//     public Integer getVer() {
//         return ver;
//     }
// 
//     public void setVer(Integer ver) {
//         this.ver = ver;
//     }
// 
//     public String getCaller() {
//         return caller;
//     }
// 
//     public void setCaller(String caller) {
//         this.caller = caller;
//     }
// 
//     public String getCh() {
//         return ch;
//     }
// 
//     public void setCh(String ch) {
//         this.ch = ch;
//     }
// 
//     public String getMac() {
//         return mac;
//     }
// 
//     public void setMac(String mac) {
//         this.mac = mac;
//     }
// 
//     public String getOs() {
//         return os;
//     }
// 
//     public void setOs(String os) {
//         this.os = os;
//     }
// 
//     public String getPlatform() {
//         return platform;
//     }
// 
//     public void setPlatform(String platform) {
//         this.platform = platform;
//     }
// 
//     @Override
//     public String toString() {
//         return "ver=" + ver +
//                 "; caller=" + caller +
//                 "; ch=" + ch +
//                 "; mac=" + mac +
//                 "; os=" + os +
//                 "; platform=" + platform;
//     }
// 
//     public static class Builder {
//         private XUserAgent xUserAgent;
// 
//         private Builder(XUserAgent xUserAgent) {
//             this.xUserAgent = xUserAgent;
//         }
// 
//         public static Builder empty() {
//             return new Builder(new XUserAgent());
//         }
// 
//         public Builder ver(Integer ver) {
//             xUserAgent.setVer(ver);
//             return this;
//         }
// 
//         public Builder ver(String ver) {
//             xUserAgent.setVer(Integer.valueOf(ver));
//             return this;
//         }
// 
//         public Builder platform(String platform) {
//             xUserAgent.setPlatform(platform);
//             return this;
//         }
// 
//         public Builder caller(String caller) {
//             xUserAgent.setCaller(caller);
//             return this;
//         }
// 
//         public Builder ch(String ch) {
//             xUserAgent.setCh(ch);
//             return this;
//         }
// 
//         public Builder mac(String mac) {
//             xUserAgent.setMac(mac);
//             return this;
//         }
// 
//         public Builder os(String os) {
//             xUserAgent.setOs(os);
//             return this;
//         }
//     }
// }


// Path: summer-core/src/main/java/org/smartx/summer/formatter/DefaultXUserAgentHeaderFormatter.java
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang3.StringUtils;
import org.smartx.summer.bean.XUserAgent;
import org.springframework.format.Formatter;
import java.lang.reflect.InvocationTargetException;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Locale;
import java.util.stream.Stream;

package org.smartx.summer.formatter;



/**
 * <p> 默认处理x-user-agent header的formatter </p>
 *
 * <b>Creation Time:</b> 2016年11月1日
 *
 * @author binglin
 * @since summer 0.1
 */
public class DefaultXUserAgentHeaderFormatter implements Formatter<XUserAgent> {

    private static final int LENGTH = 2;

    @Override
    public XUserAgent parse(String s, Locale locale) throws ParseException {