| /* |
| * Copyright (c) 1998, 2020 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: |
| // Matt MacIvor - 2.5.1 - Initial Implementation |
| package org.eclipse.persistence.internal.jaxb.json.schema.model; |
| |
| import java.util.LinkedHashMap; |
| import java.util.List; |
| import java.util.Map; |
| |
| import jakarta.xml.bind.annotation.XmlElement; |
| import jakarta.xml.bind.annotation.XmlElementWrapper; |
| |
| import org.eclipse.persistence.internal.jaxb.json.schema.JsonSchemaGenerator; |
| import org.eclipse.persistence.oxm.annotations.XmlVariableNode; |
| |
| /** |
| * INTERNAL: |
| * <p><b>Purpose:</b> |
| * This class is the root of a JAXB model representing a JSON Schema. An instance is created |
| * by the JsonSchemaGenerator based on an EclipseLink project and marshalled out using EclipseLink |
| * to create a JsonSchema. |
| * |
| * @see JsonSchemaGenerator |
| * @author mmacivor |
| * |
| */ |
| public class JsonSchema { |
| |
| @XmlElement(name="$schema") |
| private String schemaVersion = "http://json-schema.org/draft-04/schema#"; |
| |
| @XmlElement(name="title") |
| private String title; |
| |
| @XmlElement(name="type") |
| private JsonType type; |
| |
| @XmlElement(name="anyOf") |
| private Property[] anyOf; |
| |
| @XmlElement(name="enumeration") |
| private List<String> enumeration; |
| |
| @XmlVariableNode("name") |
| @XmlElementWrapper(name="properties") |
| private Map<String, Property> properties; |
| |
| @XmlElement(name="items") |
| private Property items; |
| |
| @XmlElement(name="additionalProperties") |
| private Boolean additionalProperties = null; |
| |
| @XmlVariableNode("name") |
| @XmlElementWrapper(name="definitions") |
| private Map<String, Property> definitions; |
| |
| |
| |
| private List<String> required; |
| |
| |
| public void setTitle(String title) { |
| this.title = title; |
| } |
| |
| public void setType(JsonType type) { |
| this.type = type; |
| } |
| |
| public void addProperty(Property property) { |
| this.getProperties().put(property.getName(), property); |
| |
| } |
| |
| public Map<String, Property> getProperties() { |
| if(properties == null) { |
| properties = new LinkedHashMap<String, Property>(); |
| } |
| return properties; |
| } |
| |
| public void setProperties(Map<String, Property> props) { |
| this.properties = props; |
| } |
| |
| public Map<String, Property> getDefinitions() { |
| if(definitions == null) { |
| definitions = new LinkedHashMap<String, Property>(); |
| } |
| return definitions; |
| } |
| |
| |
| public Property getProperty(String name) { |
| if(properties == null) { |
| return null; |
| } |
| return properties.get(name); |
| } |
| |
| public Property getItems() { |
| return items; |
| } |
| |
| public void setItems(Property items) { |
| this.items = items; |
| } |
| |
| public Boolean isAdditionalProperties() { |
| return additionalProperties; |
| } |
| |
| public void setAdditionalProperties(Boolean additionalProperties) { |
| this.additionalProperties = additionalProperties; |
| } |
| |
| public void setAnyOf(Property[] anyOf) { |
| this.anyOf = anyOf; |
| } |
| |
| |
| public Property[] getAnyOf() { |
| return anyOf; |
| } |
| |
| public List<String> getEnumeration() { |
| return enumeration; |
| } |
| |
| public void setEnumeration(List<String> enumeration) { |
| this.enumeration = enumeration; |
| } |
| } |