001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.juneau.bean.jsonschema;
018
019/**
020 * Represents a JSON property in the JSON-Schema core specification.
021 *
022 * @param <SELF> The self type for fluent setters.
023 */
024@SuppressWarnings({
025   "java:S119" // 'SELF' (CRTP self-type) is intentional and clearer than a single-letter name.
026})
027public class JsonSchemaProperty<SELF extends JsonSchemaProperty<SELF>> extends JsonSchema<SELF> {
028
029   /**
030    * Default constructor.
031    */
032   public JsonSchemaProperty() {}
033
034   /**
035    * Convenience constructor.
036    *
037    * @param name The name of this property.  Can be <jk>null</jk> to leave the property unset.
038    */
039   public JsonSchemaProperty(String name) {
040      setName(name);
041   }
042
043   /**
044    * Convenience constructor.
045    *
046    * @param name The name of this property.  Can be <jk>null</jk> to leave the property unset.
047    * @param type The JSON type of this property.  Can be <jk>null</jk> to leave the property unset.
048    */
049   public JsonSchemaProperty(String name, JsonType type) {
050      setName(name);
051      setType(type);
052   }
053}