All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.persistence.internal.jpa.rs.metadata.model.v2.ResourceSchema Maven / Gradle / Ivy

There is a newer version: 4.0.2
Show newest version
/*
 * Copyright (c) 2014, 2018 Oracle and/or its affiliates. All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v. 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0,
 * or the Eclipse Distribution License v. 1.0 which is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 *
 * SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
 */

// Contributors:
//     Dmitry Kornilov - Initial implementation
package org.eclipse.persistence.internal.jpa.rs.metadata.model.v2;

import org.eclipse.persistence.internal.jpa.rs.metadata.model.LinkV2;

import javax.xml.bind.JAXBElement;
import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.List;

/**
 * This class describes an entity schema. Used in JPARS 2.0 metadata model.
 *
 * @author Dmitry Kornilov
 * @since EclipseLink 2.6.0.
 */
@XmlRootElement
@XmlType(propOrder = {"schema", "allOf", "title", "properties", "definitions", "links"})
public class ResourceSchema {
    /** Schema name **/
    @XmlElement(name="$schema")
    private String schema;

    /** Inheritance **/
    private List allOf;

    /** Schema title **/
    private String title;

    /** List of entity properties **/
    @XmlElementWrapper(name="properties")
    @XmlAnyElement(lax=true)
    private List properties;

    /** Type definitions **/
    @XmlElementWrapper(name="definitions")
    @XmlAnyElement(lax=true)
    private List definitions;

    /** Links **/
    private List links;

    public String getSchema() {
        return schema;
    }

    public void setSchema(String schema) {
        this.schema = schema;
    }

    public List getAllOf() {
        return allOf;
    }

    public void setAllOf(List allOf) {
        this.allOf = allOf;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public List getProperties() {
        return properties;
    }

    public void setProperties(List properties) {
        this.properties = properties;
    }

    public List getDefinitions() {
        return definitions;
    }

    public void setDefinitions(List definitions) {
        this.definitions = definitions;
    }

    public List getLinks() {
        return links;
    }

    public void setLinks(List links) {
        this.links = links;
    }

    public void addProperty(String name, Property property) {
        if (properties == null) {
            properties = new ArrayList();
        }
        properties.add(new JAXBElement(new QName(name), Property.class, property));
    }

    public void addDefinition(String name, ResourceSchema definition) {
        // Lazy initialization
        if (definitions == null) {
            definitions = new ArrayList(1);
        }
        definitions.add(new JAXBElement(new QName(name), ResourceSchema.class, definition));
    }

    public void addAllOf(Reference reference) {
        // Lazy initialization
        if (allOf == null) {
            allOf = new ArrayList(1);
        }
        allOf.add(reference);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy