blob: ea427d277a4de93e58d71ac611050cb0f61abfb1 [file] [log] [blame]
/*
* Copyright (c) 2014, 2021 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 jakarta.xml.bind.JAXBElement;
import jakarta.xml.bind.annotation.XmlAnyElement;
import jakarta.xml.bind.annotation.XmlElement;
import jakarta.xml.bind.annotation.XmlElementWrapper;
import jakarta.xml.bind.annotation.XmlRootElement;
import jakarta.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<Reference> allOf;
/** Schema title **/
private String title;
/** List of entity properties **/
@XmlElementWrapper(name="properties")
@XmlAnyElement(lax=true)
private List<JAXBElement> properties;
/** Type definitions **/
@XmlElementWrapper(name="definitions")
@XmlAnyElement(lax=true)
private List<JAXBElement> definitions;
/** Links **/
private List<LinkV2> links;
public String getSchema() {
return schema;
}
public void setSchema(String schema) {
this.schema = schema;
}
public List<Reference> getAllOf() {
return allOf;
}
public void setAllOf(List<Reference> allOf) {
this.allOf = allOf;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<JAXBElement> getProperties() {
return properties;
}
public void setProperties(List<JAXBElement> properties) {
this.properties = properties;
}
public List<JAXBElement> getDefinitions() {
return definitions;
}
public void setDefinitions(List<JAXBElement> definitions) {
this.definitions = definitions;
}
public List<LinkV2> getLinks() {
return links;
}
public void setLinks(List<LinkV2> 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);
}
}