package javax.json.spi;
import javax.json.*;
import javax.json.stream.JsonGenerator;
import javax.json.stream.JsonGeneratorFactory;
import javax.json.stream.JsonParser;
import javax.json.stream.JsonParserFactory;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.Writer;
import java.util.Iterator;
import java.util.Map;
import java.util.ServiceLoader;
/**
* 目的:处理JSON的Service provider
*
* <p>该类所有的方法都是线程安全的,使用在多并发线程。
* @author TCM
* @create 2017年11月7日上午9:25:24
* @see ServiceLoader
*/
public abstract class JsonProvider {
//常量名,默认{@code JsonProvider}的实现类
private static final String DEFAULT_PROVIDER
= "org.glassfish.json.JsonProviderImpl";
protected JsonProvider() {}
/**
* 创建JsonProvider对象。使用{@link ServiceLoader#load(Class)}方法
* 创建该对象。如果没有可用的服务供应商(service provider),该方法返回默认。
* @see ServiceLoader
* @return a JSON provider
*/
public static JsonProvider provider() {
ServiceLoader<JsonProvider> loader = ServiceLoader.load(JsonProvider.class);
Iterator<JsonProvider> it = loader.iterator();
if (it.hasNext()) {
return it.next();//若有,则返回
}
try {
//若没有,则返回默认:"org.glassfish.json.JsonProviderImpl"
Class<?> clazz = Class.forName(DEFAULT_PROVIDER);
return (JsonProvider)clazz.newInstance();
} catch (ClassNotFoundException x) {
throw new JsonException(
"Provider " + DEFAULT_PROVIDER + " not found", x);
} catch (Exception x) {
throw new JsonException(
"Provider " + DEFAULT_PROVIDER + " could not be instantiated: " + x,
x);
}
}
public abstract JsonParser createParser(Reader reader);
public abstract JsonParser createParser(InputStream in);
public abstract JsonParserFactory createParserFactory(Map<String, ?> config);
public abstract JsonGenerator createGenerator(Writer writer);
public abstract JsonGenerator createGenerator(OutputStream out);
public abstract JsonGeneratorFactory createGeneratorFactory(Map<String, ?> config);
public abstract JsonReader createReader(Reader reader);
public abstract JsonReader createReader(InputStream in);
public abstract JsonReaderFactory createReaderFactory(Map<String,?> config);
public abstract JsonWriter createWriter(Writer writer);
public abstract JsonWriter createWriter(OutputStream out);
public abstract JsonWriterFactory createWriterFactory(Map<String,?> config);
public abstract JsonObjectBuilder createObjectBuilder();
public abstract JsonArrayBuilder createArrayBuilder();
public abstract JsonBuilderFactory createBuilderFactory(Map<String,?> config);
}
JsonProvider源码翻译
最新推荐文章于 2024-07-20 19:10:21 发布