Package com.bazaarvoice.commons.data.model.json.schema

Source Code of com.bazaarvoice.commons.data.model.json.schema.JSONSchemas$CloningFunction

package com.bazaarvoice.commons.data.model.json.schema;

import com.bazaarvoice.commons.data.model.json.schema.types.JSONSchemaArrayType;
import com.bazaarvoice.commons.data.model.json.schema.types.JSONSchemaBooleanType;
import com.bazaarvoice.commons.data.model.json.schema.types.JSONSchemaIntegerType;
import com.bazaarvoice.commons.data.model.json.schema.types.JSONSchemaNumberType;
import com.bazaarvoice.commons.data.model.json.schema.types.JSONSchemaObjectType;
import com.bazaarvoice.commons.data.model.json.schema.types.JSONSchemaStringType;
import com.bazaarvoice.commons.data.model.json.schema.types.JSONSchemaTextFormat;
import com.bazaarvoice.commons.data.model.json.schema.types.JSONSchemaUnionType;
import com.google.common.base.Function;

public final class JSONSchemas {

    public static JSONSchema extendSchema(JSONSchema schema) {
        return new JSONSchema().extendsSchema(schema);
    }

    public static JSONSchema referenceSchema(JSONSchema referencedSchema) {
        return new JSONSchema().referencesSchema(referencedSchema);
    }

    public static JSONSchema newSimpleSchema(JSONSchemaType<?> type) {
        return new JSONSchema().addType(type);
    }

    public static JSONSchema newObjectSchema(JSONSchemaProperty... properties) {
        return newSimpleSchema(new JSONSchemaObjectType().allProperties(properties));
    }

    public static JSONSchema newStrictObjectSchema(JSONSchemaProperty... properties) {
        return newSimpleSchema(new JSONSchemaObjectType().allProperties(properties).disallowAdditionalProperties());
    }

    public static JSONSchema newUniformObjectSchema(JSONSchema additionalProperties) {
        return newSimpleSchema(new JSONSchemaObjectType().additionalPropertiesSchema(additionalProperties));
    }

    public static JSONSchema newArraySchema(JSONSchema... itemSchemas) {
        return newSimpleSchema(new JSONSchemaArrayType().items(itemSchemas));
    }

    public static JSONSchema newSimpleArraySchema(JSONSchemaType<?> itemType) {
        return newArraySchema(newSimpleSchema(itemType));
    }

    public static JSONSchema newObjectArraySchema(JSONSchemaProperty... properties) {
        return newArraySchema(newObjectSchema(properties));
    }

    public static JSONSchema newStrictObjectArraySchema(JSONSchemaProperty... properties) {
        return newArraySchema(newStrictObjectSchema(properties));
    }

    public static JSONSchema newStringSchema() {
        return newSimpleSchema(new JSONSchemaStringType());
    }

    public static JSONSchema newStringFormatSchema(JSONSchemaTextFormat format) {
        return newSimpleSchema(new JSONSchemaStringType().format(format));
    }

    public static JSONSchema newNumberSchema() {
        return newSimpleSchema(new JSONSchemaNumberType());
    }

    public static JSONSchema newIntegerSchema() {
        return newSimpleSchema(new JSONSchemaIntegerType());
    }

    public static JSONSchema newBooleanSchema() {
        return newSimpleSchema(new JSONSchemaBooleanType());
    }

    public static JSONSchema newAnySchema() {
        return newSimpleSchema(JSONSchemaTypes.ANY);
    }

    public static JSONSchema newNullSchema() {
        return newSimpleSchema(JSONSchemaTypes.NULL);
    }

    public static JSONSchema newUnionSchema(JSONSchema... schemas) {
        return newSimpleSchema(new JSONSchemaUnionType().schemas(schemas));
    }

    private JSONSchemas() {
    }

    public static class CloningFunction implements Function<JSONSchema, JSONSchema> {
        public static final CloningFunction INSTANCE = new CloningFunction();

        @Override
        public JSONSchema apply(JSONSchema input) {
            return input.clone();
        }
    }
}
TOP

Related Classes of com.bazaarvoice.commons.data.model.json.schema.JSONSchemas$CloningFunction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.