package com.xqbase.baiji.schema;

/**
 * An abstract data type.
 * <p>A schema may be one of:
 * <ul>
 * <li>A <i>record</i>, mapping field names to field value data;
 * <li>An <i>enum</i>, containing one of a small set of symbols;
 * <li>An <i>array</i> of values, all of the same schema;
 * <li>A <i>map</i>, containing string/value pairs, of a declared schema;
 * <li>A <i>union</i> of other schemas;
 * <li>A unicode <i>string</i>;
 * <li>A sequence of <i>bytes</i>;
 * <li>A 32-bit signed <i>int</i>;
 * <li>A 64-bit signed <i>long</i>;
 * <li>A 32-bit IEEE single-<i>float</i>; or
 * <li>A 64-bit IEEE <i>double</i>-float; or
 * <li>A <i>boolean</i>; or
 * <li><i>null</i>.
 * </ul>
 * <p/>
 * The schema objects are <i>logically</i> immutable.
 *
 * @author Tony He
 */
public abstract class Schema {

    private final SchemaType type;
    private final PropertyMap propertyMap;

    protected Schema(SchemaType type, PropertyMap propertyMap) {
        this.type = type;
        this.propertyMap = propertyMap;
    }
}

@@ -1017,11 +1017,371 @@
 p;%0A    %7D
+%0A%0A    /**%0A     * Get the type of the schema.%0A     * @return type of schema%0A     */%0A    public SchemaType getType() %7B%0A        return type;%0A    %7D%0A%0A    /**%0A     * Get additional JSON attributes apart from those defined in the Baiji spec.%0A     * @return additional JSON attributes%0A     */%0A    public PropertyMap getPropertyMap() %7B%0A        return propertyMap;%0A    %7D
 %0A%7D%0A

update the SchemaType...