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
019import java.net.*;
020import java.util.*;
021
022import org.apache.juneau.*;
023
024/**
025 * Convenience class for representing a schema reference such as <js>"{'$ref':'/url/to/ref'}"</js>.
026 *
027 * <p>
028 * An instance of this object is equivalent to calling...
029 *
030 * <p class='bjava'>
031 *    JsonSchema <jv>schema</jv> = <jk>new</jk> JsonSchema().setRef(<jv>uri</jv>);
032 * </p>
033 */
034public class JsonSchemaRef extends JsonSchema {
035
036   /**
037    * Constructor.
038    *
039    * <p>
040    * The value can be of any of the following types: {@link URI}, {@link URL}, {@link String}.
041    * Strings must be valid URIs.
042    *
043    * <p>
044    * URIs defined by {@link UriResolver} can be used for values.
045    *
046    * @param uri The URI of the target reference.  Can be <jk>null</jk>.
047    */
048   public JsonSchemaRef(Object uri) {
049      this.setRef(uri);
050   }
051
052   @Override /* Overridden from JsonSchema */
053   public JsonSchemaRef addAdditionalItems(JsonSchema...additionalItems) {
054      super.addAdditionalItems(additionalItems);
055      return this;
056   }
057
058   @Override /* Overridden from JsonSchema */
059   public JsonSchemaRef addAllOf(JsonSchema...allOf) {
060      super.addAllOf(allOf);
061      return this;
062   }
063
064   @Override /* Overridden from JsonSchema */
065   public JsonSchemaRef addAnyOf(JsonSchema...anyOf) {
066      super.addAnyOf(anyOf);
067      return this;
068   }
069
070   @Override /* Overridden from JsonSchema */
071   public JsonSchemaRef addDef(String name, JsonSchema def) {
072      super.addDef(name, def);
073      return this;
074   }
075
076   @Override /* Overridden from JsonSchema */
077   public JsonSchemaRef addDefinition(String name, JsonSchema definition) {
078      super.addDefinition(name, definition);
079      return this;
080   }
081
082   @Override /* Overridden from JsonSchema */
083   public JsonSchemaRef addDependency(String name, JsonSchema dependency) {
084      super.addDependency(name, dependency);
085      return this;
086   }
087
088   @Override /* Overridden from JsonSchema */
089   public JsonSchemaRef addDependentRequired(String name, List<String> required) {
090      super.addDependentRequired(name, required);
091      return this;
092   }
093
094   @Override /* Overridden from JsonSchema */
095   public JsonSchemaRef addDependentSchema(String name, JsonSchema schema) {
096      super.addDependentSchema(name, schema);
097      return this;
098   }
099
100   @Override /* Overridden from JsonSchema */
101   public JsonSchemaRef addEnum(Object...enum_) {
102      super.addEnum(enum_);
103      return this;
104   }
105
106   @Override /* Overridden from JsonSchema */
107   public JsonSchemaRef addExamples(Object...examples) {
108      super.addExamples(examples);
109      return this;
110   }
111
112   @Override /* Overridden from JsonSchema */
113   public JsonSchemaRef addItems(JsonSchema...items) {
114      super.addItems(items);
115      return this;
116   }
117
118   @Override /* Overridden from JsonSchema */
119   public JsonSchemaRef addOneOf(JsonSchema...oneOf) {
120      super.addOneOf(oneOf);
121      return this;
122   }
123
124   @Override /* Overridden from JsonSchema */
125   public JsonSchemaRef addPatternProperties(JsonSchemaProperty...properties) {
126      super.addPatternProperties(properties);
127      return this;
128   }
129
130   @Override /* Overridden from JsonSchema */
131   public JsonSchemaRef addPrefixItems(JsonSchema...prefixItems) {
132      super.addPrefixItems(prefixItems);
133      return this;
134   }
135
136   @Override /* Overridden from JsonSchema */
137   public JsonSchemaRef addProperties(JsonSchema...properties) {
138      super.addProperties(properties);
139      return this;
140   }
141
142   @Override /* Overridden from JsonSchema */
143   public JsonSchemaRef addRequired(JsonSchemaProperty...properties) {
144      super.addRequired(properties);
145      return this;
146   }
147
148   @Override /* Overridden from JsonSchema */
149   public JsonSchemaRef addRequired(List<String> required) {
150      super.addRequired(required);
151      return this;
152   }
153
154   @Override /* Overridden from JsonSchema */
155   public JsonSchemaRef addRequired(String...required) {
156      super.addRequired(required);
157      return this;
158   }
159
160   @Override /* Overridden from JsonSchema */
161   public JsonSchemaRef addTypes(JsonType...types) {
162      super.addTypes(types);
163      return this;
164   }
165
166   @Override /* Overridden from JsonSchema */
167   public JsonSchema getNot() { return super.getNot(); }
168
169   @Override /* Overridden from JsonSchema */
170   public JsonSchema getUnevaluatedItems() { return super.getUnevaluatedItems(); }
171
172   @Override /* Overridden from JsonSchema */
173   public JsonSchema resolve() {
174      return super.resolve();
175   }
176
177   @Override /* Overridden from JsonSchema */
178   public JsonSchemaRef setAllOf(List<JsonSchema> allOf) {
179      super.setAllOf(allOf);
180      return this;
181   }
182
183   @Override /* Overridden from JsonSchema */
184   public JsonSchemaRef setAnyOf(List<JsonSchema> anyOf) {
185      super.setAnyOf(anyOf);
186      return this;
187   }
188
189   @Override /* Overridden from JsonSchema */
190   public JsonSchemaRef setConst(Object const_) {
191      super.setConst(const_);
192      return this;
193   }
194
195   @Override /* Overridden from JsonSchema */
196   public JsonSchemaRef setContentEncoding(String contentEncoding) {
197      super.setContentEncoding(contentEncoding);
198      return this;
199   }
200
201   @Override /* Overridden from JsonSchema */
202   public JsonSchemaRef setContentMediaType(String contentMediaType) {
203      super.setContentMediaType(contentMediaType);
204      return this;
205   }
206
207   @Override /* Overridden from JsonSchema */
208   public JsonSchemaRef setDefinitions(Map<String,JsonSchema> definitions) {
209      super.setDefinitions(definitions);
210      return this;
211   }
212
213   @Override /* Overridden from JsonSchema */
214   public JsonSchemaRef setDependencies(Map<String,JsonSchema> dependencies) {
215      super.setDependencies(dependencies);
216      return this;
217   }
218
219   @Override /* Overridden from JsonSchema */
220   public JsonSchemaRef setDependentRequired(Map<String,List<String>> dependentRequired) {
221      super.setDependentRequired(dependentRequired);
222      return this;
223   }
224
225   @Override /* Overridden from JsonSchema */
226   public JsonSchemaRef setDependentSchemas(Map<String,JsonSchema> dependentSchemas) {
227      super.setDependentSchemas(dependentSchemas);
228      return this;
229   }
230
231   @Override /* Overridden from JsonSchema */
232   public JsonSchemaRef setDescription(String description) {
233      super.setDescription(description);
234      return this;
235   }
236
237   @Override /* Overridden from JsonSchema */
238   public JsonSchemaRef setEnum(List<Object> enum_) {
239      super.setEnum(enum_);
240      return this;
241   }
242
243   @Override /* Overridden from JsonSchema */
244   public JsonSchemaRef setExamples(List<Object> examples) {
245      super.setExamples(examples);
246      return this;
247   }
248
249   @Override /* Overridden from JsonSchema */
250   public JsonSchemaRef setExclusiveMaximum(Number exclusiveMaximum) {
251      super.setExclusiveMaximum(exclusiveMaximum);
252      return this;
253   }
254
255   @Override /* Overridden from JsonSchema */
256   public JsonSchemaRef setExclusiveMinimum(Number exclusiveMinimum) {
257      super.setExclusiveMinimum(exclusiveMinimum);
258      return this;
259   }
260
261   @SuppressWarnings("deprecation")
262   @Override /* Overridden from JsonSchema */
263   public JsonSchemaRef setId(Object id) {
264      super.setId(id);
265      return this;
266   }
267
268   @Override /* Overridden from JsonSchema */
269   public JsonSchemaRef setMaximum(Number maximum) {
270      super.setMaximum(maximum);
271      return this;
272   }
273
274   @Override /* Overridden from JsonSchema */
275   public JsonSchemaRef setMaxItems(Integer maxItems) {
276      super.setMaxItems(maxItems);
277      return this;
278   }
279
280   @Override /* Overridden from JsonSchema */
281   public JsonSchemaRef setMaxLength(Integer maxLength) {
282      super.setMaxLength(maxLength);
283      return this;
284   }
285
286   @Override /* Overridden from JsonSchema */
287   public JsonSchemaRef setMaxProperties(Integer maxProperties) {
288      super.setMaxProperties(maxProperties);
289      return this;
290   }
291
292   @Override /* Overridden from JsonSchema */
293   public JsonSchemaRef setMinimum(Number minimum) {
294      super.setMinimum(minimum);
295      return this;
296   }
297
298   @Override /* Overridden from JsonSchema */
299   public JsonSchemaRef setMinItems(Integer minItems) {
300      super.setMinItems(minItems);
301      return this;
302   }
303
304   @Override /* Overridden from JsonSchema */
305   public JsonSchemaRef setMinLength(Integer minLength) {
306      super.setMinLength(minLength);
307      return this;
308   }
309
310   @Override /* Overridden from JsonSchema */
311   public JsonSchemaRef setMinProperties(Integer minProperties) {
312      super.setMinProperties(minProperties);
313      return this;
314   }
315
316   @Override /* Overridden from JsonSchema */
317   public JsonSchemaRef setMultipleOf(Number multipleOf) {
318      super.setMultipleOf(multipleOf);
319      return this;
320   }
321
322   @Override /* Overridden from JsonSchema */
323   public JsonSchemaRef setName(String name) {
324      super.setName(name);
325      return this;
326   }
327
328   @Override /* Overridden from JsonSchema */
329   public JsonSchemaRef setNot(JsonSchema not) {
330      super.setNot(not);
331      return this;
332   }
333
334   @Override /* Overridden from JsonSchema */
335   public JsonSchemaRef setOneOf(List<JsonSchema> oneOf) {
336      super.setOneOf(oneOf);
337      return this;
338   }
339
340   @Override /* Overridden from JsonSchema */
341   public JsonSchemaRef setPattern(String pattern) {
342      super.setPattern(pattern);
343      return this;
344   }
345
346   @Override /* Overridden from JsonSchema */
347   public JsonSchemaRef setPatternProperties(Map<String,JsonSchema> patternProperties) {
348      super.setPatternProperties(patternProperties);
349      return this;
350   }
351
352   @Override /* Overridden from JsonSchema */
353   public JsonSchemaRef setPrefixItems(JsonSchemaArray prefixItems) {
354      super.setPrefixItems(prefixItems);
355      return this;
356   }
357
358   @Override /* Overridden from JsonSchema */
359   public JsonSchemaRef setProperties(Map<String,JsonSchema> properties) {
360      super.setProperties(properties);
361      return this;
362   }
363
364   @Override /* Overridden from JsonSchema */
365   public JsonSchemaRef setReadOnly(Boolean readOnly) {
366      super.setReadOnly(readOnly);
367      return this;
368   }
369
370   @Override /* Overridden from JsonSchema */
371   public JsonSchemaRef setRequired(List<String> required) {
372      super.setRequired(required);
373      return this;
374   }
375
376   @Override /* Overridden from JsonSchema */
377   public JsonSchemaRef setSchemaMap(JsonSchemaMap schemaMap) {
378      super.setSchemaMap(schemaMap);
379      return this;
380   }
381
382   @Override /* Overridden from JsonSchema */
383   public JsonSchemaRef setTitle(String title) {
384      super.setTitle(title);
385      return this;
386   }
387
388   @Override /* Overridden from JsonSchema */
389   public JsonSchemaRef setType(Object type) {
390      super.setType(type);
391      return this;
392   }
393
394   @Override /* Overridden from JsonSchema */
395   public JsonSchemaRef setUnevaluatedItems(JsonSchema unevaluatedItems) {
396      super.setUnevaluatedItems(unevaluatedItems);
397      return this;
398   }
399
400   @Override /* Overridden from JsonSchema */
401   public JsonSchemaRef setUnevaluatedProperties(JsonSchema unevaluatedProperties) {
402      super.setUnevaluatedProperties(unevaluatedProperties);
403      return this;
404   }
405
406   @Override /* Overridden from JsonSchema */
407   public JsonSchemaRef setUniqueItems(Boolean uniqueItems) {
408      super.setUniqueItems(uniqueItems);
409      return this;
410   }
411
412   @Override /* Overridden from JsonSchema */
413   public JsonSchemaRef setWriteOnly(Boolean writeOnly) {
414      super.setWriteOnly(writeOnly);
415      return this;
416   }
417}