/*
* 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);
}
}