
net.vvakame.util.jsonpullparser.builder.JsonPropertyMeta Maven / Gradle / Ivy
package net.vvakame.util.jsonpullparser.builder;
/**
* Builder factory.
* @author vvakame
* @param
* @param
*/
public class JsonPropertyMeta implements JsonPropertyBuilderCreator {
private Class extends JsonPropertyCoder> coderClass;
private String name;
@Override
@SuppressWarnings("unchecked")
public JsonPropertyBuilder get() {
return getBuilder();
}
/**
* the constructor.
* @param coderClass
* @param name
* @category constructor
*/
public JsonPropertyMeta(Class extends JsonPropertyCoder> coderClass, String name) {
this.coderClass = coderClass;
this.name = name;
}
JsonPropertyBuilder getBuilder() {
return new JsonPropertyBuilder(coderClass, name, null, null);
}
/**
* Gets a new instance of property builder for the given key name.
* @param name
* @return a new property builder instance
* @author vvakame
*/
public JsonPropertyBuilder name(String name) {
return new JsonPropertyBuilder(coderClass, name, null, null);
}
/**
* Gets a new instance of property builder for the given value coder.
* @param coder
* @return a new property builder instance
* @author vvakame
*/
public JsonPropertyBuilder coder(JsonModelCoder coder) {
return new JsonPropertyBuilder(coderClass, name, coder, null);
}
/**
* Gets a new instance of property builder for the given coder router.
* @param router
* @return a new property builder instance
* @author vvakame
*/
public JsonPropertyBuilder router(JsonCoderRouter router) {
return new JsonPropertyBuilder(coderClass, name, null, router);
}
}