All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jsonschema2pojo.GenerationConfig Maven / Gradle / Ivy

There is a newer version: 1.2.1
Show newest version
/**
 * Copyright © 2010-2017 Nokia
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.jsonschema2pojo;

import java.io.File;
import java.io.FileFilter;
import java.net.URL;
import java.util.Iterator;

import org.jsonschema2pojo.rules.RuleFactory;

/**
 * Defines the configuration options for Java type generation, including source
 * and target paths/packages and all behavioural options (e.g should builders be
 * generated, should primitives be used, etc).
 * 

* Devs: add to this interface if you need to introduce a new config property. */ public interface GenerationConfig { /** * Gets the 'generateBuilders' configuration option. * * @return Whether to generate builder-style methods of the form * withXxx(value) (that return this), * alongside the standard, void-return setters. */ boolean isGenerateBuilders(); /** * Gets the 'usePrimitives' configuration option. * * @return whether to use primitives (long, double * , boolean) instead of wrapper types where possible * when generating bean properties (has the side-effect of making * those properties non-null). */ boolean isUsePrimitives(); /** * Gets the 'source' configuration option. * * @return The source file(s) or directory(ies) from which JSON Schema will * be read. */ Iterator getSource(); /** * Gets the 'targetDirectory' configuration option. * * @return The target directory into which generated types will be written * (may or may not exist before types are written) */ File getTargetDirectory(); /** * Gets the 'targetPackage' configuration option. * * @return The java package used for generated types. */ String getTargetPackage(); /** * Gets the 'propertyWordDelimiters' configuration option. * * @return an array of characters that should act as word delimiters when * choosing java bean property names. */ char[] getPropertyWordDelimiters(); /** * Gets the 'useLongIntegers' configuration option. * * @return Whether to use the java type long (or * {@link java.lang.Long}) instead of int (or * {@link java.lang.Integer}) when representing the JSON Schema type * 'integer'. */ boolean isUseLongIntegers(); /** * Gets the 'useBigIntegers' configuration option. * * @return Whether to use the java type {@link java.math.BigInteger} instead * of int (or {@link java.lang.Integer}) when * representing the JSON Schema type 'integer'. Note that this * configuration overrides {@link #isUseLongIntegers()}. */ boolean isUseBigIntegers(); /** * Gets the 'useDoubleNumbers' configuration option. * * @return Whether to use the java type double (or * {@link java.lang.Double}) instead of float (or * {@link java.lang.Float}) when representing the JSON Schema type * 'number'. */ boolean isUseDoubleNumbers(); /** * Gets the 'useBigDecimals' configuration option. * * @return Whether to use the java type {@link java.math.BigDecimal} instead * of float (or {@link java.lang.Float}) when * representing the JSON Schema type 'number'. Note that this * configuration overrides {@link #isUseDoubleNumbers()}. */ boolean isUseBigDecimals(); /** * Gets the 'includeHashcodeAndEquals' configuration option. * * @return Whether to use include hashCode and * equals methods in generated Java types. */ boolean isIncludeHashcodeAndEquals(); /** * Gets the 'includeToString' configuration option. * * @return Whether to use include a toString method in * generated Java types. */ boolean isIncludeToString(); /** * Gets the 'toStringExcludes' configuration option. * * @return An array of strings representing fields * that should be excluded from toString methods */ String[] getToStringExcludes(); /** * Gets the 'annotationStyle' configuration option. * * @return The style of annotations to use in the generated Java types. *

* Supported values: *

    *
  • jackson1 (apply annotations from the * Jackson 1.x library) *
  • *
  • jackson2 (apply annotations from the * * Jackson 2.x library)
  • *
  • gson (apply annotations from the * gson * library)
  • *
  • moshi1 (apply annotations from the * moshi library)
  • *
  • none (apply no annotations at all)
  • *
* @see AnnotatorFactory */ AnnotationStyle getAnnotationStyle(); /** * Gets the 'inclusionLevel' option for Jackson1 and Jackson2 serializers. * * @return Level of inclusion to set in the generated Java types. *

* Supported values *

    *
  • ALWAYS
  • *
  • NON_ABSENT
  • *
  • NON_DEFAULT
  • *
  • NON_EMPTY
  • *
  • NON_NULL
  • *
  • USE_DEFAULTS
  • *
*

* * @see InclusionLevel */ InclusionLevel getInclusionLevel(); /** * Gets the 'customAnnotator' configuration option. * * @return An annotator that will be used in addition to the one chosen by * {@link #getAnnotationStyle()} */ Class getCustomAnnotator(); /** * Gets the 'customRuleFactory' configuration option. * * @return An Rule Factory that will be used for the creation of generation * rules. */ Class getCustomRuleFactory(); /** * Gets the 'includeJsr303Annotations' configuration option. * * @return Whether to include * JSR-303 * annotations (for schema rules like minimum, maximum, etc) in * generated Java types. */ boolean isIncludeJsr303Annotations(); /** * Gets the 'includeJsr305Annotations' configuration option. * * @return Whether to include * JSR-305 * annotations (for schema rules like Nullable, NonNull, etc) in * generated Java types. */ boolean isIncludeJsr305Annotations(); /** * Gets the 'sourceType' configuration option. * * @return The type of input documents that will be read *

* Supported values: *

    *
  • jsonschema
  • *
  • json
  • *
*/ SourceType getSourceType(); /** * Gets the 'removeOldOutput' configuration option. * * @return Whether to empty the target directory before generation occurs, * to clear out all source files that have been generated * previously. Be warned, when activated this * option will cause jsonschema2pojo to indiscriminately * delete the entire contents of the target directory (all files and * folders) before it begins generating sources. */ boolean isRemoveOldOutput(); /** * Gets the 'outputEncoding' configuration option. * * @return The character encoding that should be used when writing the * generated Java source files. */ String getOutputEncoding(); /** * Gets the 'useJodaDates' configuration option. * * @return Whether to use {@link org.joda.time.DateTime} instead of * {@link java.util.Date} when adding date type fields to generated * Java types. */ boolean isUseJodaDates(); /** * Gets the 'useJodaLocalDates' configuration option. * * @return Whether to use {@link org.joda.time.LocalDate} instead of string * when adding string type fields with a format of date (not * date-time) to generated Java types. */ boolean isUseJodaLocalDates(); /** * Gets the 'useJodaLocalTimes' configuration option. * * @return Whether to use {@link org.joda.time.LocalTime} instead of string * when adding string type fields with a format of time (not * date-time) to generated Java types. */ boolean isUseJodaLocalTimes(); /** * Gets the 'useCommonsLang3' configuration option. * * @return Whether to use commons-lang 3.x imports instead of commons-lang * 2.x imports when adding equals, hashCode and toString methods. */ boolean isUseCommonsLang3(); /** * Gets the 'parcelable' configuration option. * * @return Whether to make the generated types 'parcelable' (for Android * development) */ boolean isParcelable(); /** * Gets the 'serializable' configuration option. * * @return Whether to make the generated types 'serializable' */ boolean isSerializable(); /** * Gets the file filter used to isolate the schema mapping files in the * source directories. * * @return the file filter use when scanning for schema files. */ FileFilter getFileFilter(); /** * Gets the 'initializeCollections' configuration option. * * @return Whether to initialize collections with empty instance or null. */ boolean isInitializeCollections(); /** * Gets the 'getClassNamePrefix' configuration option. * * @return Whether to add a prefix to generated classes. */ String getClassNamePrefix(); /** * Gets the 'getClassNameSuffix' configuration option. * * @return Whether to add a suffix to generated classes. */ String getClassNameSuffix(); /** * Gets the 'fileExtensions' configuration option. * * @return An array of strings that should be considered as file extensions * and therefore not included in class names. */ String[] getFileExtensions(); /** * Gets the 'includeConstructors' configuration option. * * @return Whether to generate constructors or not. */ boolean isIncludeConstructors(); /** * Gets the 'constructorsRequiredPropertiesOnly' configuration option * * @return Whether generated constructors should have parameters for all * properties, or only required ones. */ boolean isConstructorsRequiredPropertiesOnly(); /** * Gets the 'includeAdditionalProperties' configuration option. * * @return Whether to allow 'additional properties' support in objects. * Setting this to false will disable additional properties support, * regardless of the input schema(s). */ boolean isIncludeAdditionalProperties(); /** * Gets the 'includeAccessors' configuration option. * * @return Whether to include getters/setters or to omit these accessor * methods and create public fields instead. */ boolean isIncludeAccessors(); /** * Gets the 'targetVersion' configuration option. * * @return The target version for generated source files. */ String getTargetVersion(); /** * Gets the `includeDynamicAccessors` configuraiton option. * * @return Whether to include dynamic getters, setters, and builders or to * omit these methods. */ boolean isIncludeDynamicAccessors(); /** * Gets the `dateTimeType` configuration option. *

* Example values: *

    *
  • org.joda.time.LocalDateTime (Joda)
  • *
  • java.time.LocalDateTime (JSR310)
  • *
  • null (default behavior)
  • *
* * @return The java type to use instead of {@link java.util.Date} when * adding date type fields to generate Java types. */ String getDateTimeType(); /** * Gets the `dateType` configuration option. *

* Example values: *

    *
  • org.joda.time.LocalDate (Joda)
  • *
  • java.time.LocalDate (JSR310)
  • *
  • null (default behavior)
  • *
* * @return The java type to use instead of string when adding string type * fields with a format of date (not date-time) to generated Java * types. */ String getDateType(); /** * Gets the `timeType` configuration option. *

* Example values: *

    *
  • org.joda.time.LocalTime (Joda)
  • *
  • java.time.LocalTime (JSR310)
  • *
  • null (default behavior)
  • *
* * @return The java type to use instead of string when adding string type * fields with a format of time (not date-time) to generated Java * types. */ String getTimeType(); /** * Gets the `formatDates` configuration option * * @return Whether the fields of type date have the * @JsonFormat annotation with pattern set to the * default value of yyyy-MM-dd */ boolean isFormatDates(); /** * Gets the `formatTimes` configuration option * * @return Whether the fields of type time have the * @JsonFormat annotation with pattern set to the * default value of HH:mm:ss.SSS */ boolean isFormatTimes(); /** * Gets the `formatDateTime` configuration option * * @return Whether the fields of type date-type have the * @JsonFormat annotation with pattern set to the * default value of yyyy-MM-dd'T'HH:mm:ss.SSSZ */ boolean isFormatDateTimes(); /** * Gets the 'customDatePattern' configuration option * * @return The custom format that dates will use when types are serialized. * Requires support from your JSON binding library. */ String getCustomDatePattern(); /** * Gets the 'customTimePattern' configuration option * * @return The custom format that times will use when types are serialized. * Requires support from your JSON binding library. */ String getCustomTimePattern(); /** * Gets the 'customDateTimePattern' configuration option * * @return The custom format that dates will use when types are serialized. * Requires support from your JSON binding library. */ String getCustomDateTimePattern(); /** * Gets the `refFragmentPathDelimiters` configuration option. * * @return A string containing any characters that should act as path * delimiters when resolving $ref fragments. By default, #, / and . * are used in an attempt to support JSON Pointer and JSON Path. */ String getRefFragmentPathDelimiters(); /** * Gets the 'sourceSortOrder' configuration option. * * @return *

* Supported values: *

    *
  • OS (Let the OS influence the order the source files are processed.)
  • *
  • FILES_FIRST (Case sensitive sort, visit the files first. The source files are processed in a breadth * first sort order.)
  • *
  • SUBDIRS_FIRST (Case sensitive sort, visit the sub-directories before the files. The source files are * processed in a depth first sort order.)
  • *
*/ SourceSortOrder getSourceSortOrder(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy