/* * Created by Andrey Cherkashin (acherkashin) * http://acherkashin.me * * License * Copyright (c) 2015 Andrey Cherkashin * The project released under the MIT license: http://opensource.org/licenses/MIT */ package com.juniform; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; /** * * @author acherkashin */ public class JUniform { private final static Map<String,IJUniformPacker> _instances = new HashMap<>(); public final static String PACKER_TYPE_STRING = "string"; public final static String PACKER_TYPE_JSON = "json"; public final static String PACKER_TYPE_MESSAGE_PACK = "msgpack"; public final static String[] SUPPORTED_FORMATS = new String[] { PACKER_TYPE_STRING, PACKER_TYPE_JSON, PACKER_TYPE_MESSAGE_PACK }; /** * Returns new instance of a specific packer * @param type * @return */ public static IJUniformPacker newPackerInstance(String type) { switch(type) { case PACKER_TYPE_STRING: return new JUniformPackerString(); case PACKER_TYPE_JSON: return new JUniformPackerJSON(); case PACKER_TYPE_MESSAGE_PACK: return new JUniformPackerMessagePack(); } Logger.getLogger(JUniform.class.getName()).warning("Failed to create packer because the type in unknown: "+type); return null; } /** * Returns static global instance of a specific packer * @param type * @return */ public static IJUniformPacker getPackerInstance(String type) { if (false == JUniform.isFormatSupported(type)) { Logger.getLogger(JUniform.class.getName()).warning("Failed to create packer because the type is not supported: "+type); return null; } if (false == _instances.containsKey(type)) { _instances.put(type, JUniform.newPackerInstance(type)); } return _instances.get(type); } public static boolean isFormatSupported(String format) { return Arrays.asList(SUPPORTED_FORMATS).contains(format); } }