org.eclipse.persistence.internal.jpa.rs.metadata.model.v2.ResourceSchema Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of org.eclipse.persistence.core Show documentation
Show all versions of org.eclipse.persistence.core Show documentation
EclipseLink build based upon Git transaction ecdf3c32c4
/*
* 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);
}
}